Alamin ang lahat tungkol sa Socket Programming sa Java



Ang Java Socket program ay ginagamit para sa komunikasyon sa pagitan ng mga application na tumatakbo sa iba't ibang JRE. Ang Java Socket na programa ay maaaring maging koneksyon o nakakonekta.

Socket programming sa ay ginagamit para sa komunikasyon sa pagitan ng mga application na tumatakbo sa iba't ibang . Maaari itong maging oriented sa koneksyon o walang koneksyon. Sa kabuuan, ang isang socket ay isang paraan upang magtatag ng isang koneksyon sa pagitan ng isang client at isang server. Sa artikulong ito, sasabihin ko sa iyo ang lahat tungkol sa Socket Programming.

Sa ibaba ang mga paksa ay sakop sa artikulong ito:





Ano ang Socket Programming sa Java?

Pagprogram ng socket ay isang paraan ng pagkonekta ng dalawang mga node sa isang network upang makipag-usap sa bawat isa. Isa socket (Node) nakikinig sa isang partikular na port sa isang IP, habang iba socket maabot ang iba upang makabuo ng isang koneksyon.

Komunikasyon ng Client Server - Socket Programming sa Java - Edureka



Bumubuo ang server ng nakikinig socket habang naabot ng client ang server. Socket at Socket ng Server ay ginagamit para sa koneksyon na nakatuon sa socket program.

Ngayon ay unawain natin ang pangunahing konsepto ng Socket Programming ibig sabihin isang socket.

Ano ang isang Socket sa Java?

SA socket sa ay isang endpoint ng isang dalawang-daan na link sa komunikasyon sa pagitan ng dalawang mga programa na tumatakbo sa network. A socket ay nakasalalay sa isang numero ng port upang ang layer ng TCP ay maaaring makilala ang application na ang data ay nakalaan na ipadala.



Ang isang endpoint ay isang kumbinasyon ng isang IP address at isang numero ng port. Ang pakete sa Java platform ay nagbibigay ng isang klase,Socketna nagpapatupad ng isang bahagi ng isang dalawahang koneksyon sa pagitan ng iyong programang Java at ng isa pang programa sa network. Ang klase ay nakaupo sa tuktok ng isang pagpapatupad na umaasa sa platform, itinatago ang mga detalye ng anumang partikular na system mula sa iyong programa sa Java. Sa pamamagitan ng paggamit ng klase sa halip na umasa sa katutubong code, ang iyong maaaring makipag-usap sa network sa isang platform na independiyenteng platform.

Ngayong alam mo na, ano ang Socket sa Java, ilipat natin nang malayo at unawain kung paano nakikipag-usap ang client sa server at kung paano tumugon muli ang server.

Programming sa Client Side

Sa kaso ng programa sa panig ng client, maghihintay muna ang kliyente para magsimula ang server. Kapag ang server ay nakabukas at tumatakbo, magpapadala ito ng mga kahilingan sa server. Pagkatapos nito, maghihintay ang kliyente para sa tugon mula sa server. Kaya, ito ang buong lohika ng komunikasyon ng client at server. Ngayon ay unawain natin ang detalye ng panig ng kliyente at server sa detalye.

Upang makapagsimula ng isang kahilingan sa mga kliyente, kailangan mong sundin ang mga hakbang na nabanggit sa ibaba:

1. Magtatag ng isang Koneksyon

Ang pinakaunang hakbang ay upang magtaguyod ng isang koneksyon ng socket. Ang isang koneksyon ng socket ay nagpapahiwatig na ang dalawang machine ay may impormasyon tungkol sa lokasyon ng network ng bawat isa (IP Address) at TCP port.

Maaari kang lumikha ng isang Socket sa tulong ng isang pahayag sa ibaba:

Socket socket = bagong Socket ('127.0.0.1', 5000)

  • Dito, ang unang argumento ay kumakatawan sa IP address ng Server .

  • Ang pangalawang argumento ay kumakatawan sa Port ng TCP . (Ito ay isang numero na kumakatawan sa aling application ang dapat tumakbo sa isang server.)

2. Komunikasyon

Upang makipag-usap sa isang koneksyon ng socket, ginagamit ang mga stream para sa parehong pag-input at paglabas ng data. Matapos maitaguyod ang isang koneksyon at ipadala ang mga kahilingan, kailangan mong isara ang koneksyon.

3. Pagsara ng koneksyon

Ang koneksyon ng socket ay sarado nang sarado sa sandaling ang mensahe sa server ay ipinadala.

Tingnan natin ngayon kung paano magsulat ng isang programa ng Java upang magpatupad ng koneksyon ng socket sa panig ng kliyente.

// Isang programang Java para sa isang ClientSide na pag-import ng java.net. * Pag-import ng java.io. * pampublikong klase ClientProgram {// ipasimula ang socket at input output stream ng pribadong Socket socket = null pribadong DataInputStream input = null pribadong DataOutputStream out = null // konstruktor upang ilagay ang ip address at port ng publiko Client (String address, int port) {// magtaguyod ng isang koneksyon subukan {socket = bagong Socket (address, port) System.out.println ('Nakakonekta') // kumukuha ng input mula sa terminal input = bagong DataInputStream (System.in) // nagpapadala ng output sa socket out = bagong DataOutputStream (socket.getOutputStream ())} catch (UnknownHostException u) {System.out.println (u)} catch (IOException i) {System.out .println (i)} // string upang mabasa ang mensahe mula sa pag-input ng String line = '' // panatilihin ang pagbabasa hanggang sa 'Over' ay input habang (! line.equals ('Over')) {try {line = input.readLine ( ) out.writeUTF (line)} catch (IOException i) {System.out.println (i)}} // isara ang koneksyon subukan ang {input.close () out.close () socket.close ()} catch (IOException ako ) {System.out.println (i)}} pampublikong static void main (String args []) {Client client = new Client ('127.0.0.1', 5000)}}

Ngayon, ipatupad natin ang pag-program sa panig ng server at pagkatapos ay makarating sa output.

Server Side Programming

Talaga, isisimulan ng server ang object nito at maghihintay para sa kahilingan ng kliyente. Sa sandaling maipadala ng kliyente ang kahilingan, ang server ay muling makikipag-usap sa tugon.

Upang mai-code ang server-side application, kailangan mo ng dalawang sockets at ang mga ito ay ang mga sumusunod:

  • SA ServerSocket na naghihintay para sa mga kahilingan ng kliyente (kapag ang isang kliyente ay gumawa ng isang bagong Socket ())

  • Isang payak na matanda socket para sa komunikasyon sa kliyente.

    Ang code ng serye ng fibonacci sa Java

Pagkatapos nito, kailangan mong makipag-usap sa kliyente na may tugon.

Komunikasyon

getOutputStream () ginagamit ang pamamaraan upang maipadala ang output sa pamamagitan ng socket.

Isara ang Koneksyon

Mahalagang isara ang koneksyon sa pamamagitan ng pagsara ng socket pati na rin ang mga input / output stream kapag tapos na ang lahat.

Tingnan natin ngayon kung paano magsulat ng isang programa ng Java upang magpatupad ng koneksyon ng socket sa panig ng server.

// Isang programang Java para sa isang Serverside import na java.net. * I-import ang java.io. * pampublikong klase ServerSide {// simulan ang socket at input stream na pribadong Socket socket = null pribadong ServerSocket server = null pribadong DataInputStream in = null // konstruktor na may port public Server (int port) {// nagsisimula sa server at naghihintay para sa isang koneksyon subukan ang {server = new ServerSocket (port) System.out.println ('Nagsimula ang server') System.out.println ('Naghihintay para sa isang client .. . ') socket = server.accept () System.out.println (' Tinanggap ang kliyente ') // kumukuha ng input mula sa client socket sa = bagong DataInputStream (bagong BufferedInputStream (socket.getInputStream ())) String line = '' / nagbabasa ng mensahe mula sa client hanggang maipadala ang 'Over' habang (! line.equals ('Over')) {try {line = in.readUTF () System.out.println (line)} catch (IOException i) {System. out.println (i)}} System.out.println ('Koneksyon sa pagsara') // malapit na koneksyon socket.close () in.close ()} catch (IOException i) {System.out.println (i)}} public static void main (String args []) { Server server = bagong Server (5000)}}

Matapos mai-configure ang parehong client at server end, maaari mo munang ipatupad ang program ng panig ng server. Pagkatapos nito, kailangan mong patakbuhin ang programa sa panig ng kliyente at ipadala ang kahilingan. Sa sandaling maipadala ang kahilingan mula sa pagtatapos ng client, tutugon muli ang server. Sa ibaba ang snapshot ay kumakatawan sa pareho.

1. Kapag pinatakbo mo ang script ng panig ng server, magsisimula ito at maghihintay para magsimula ang kliyente.

2. Susunod, makakonekta ang kliyente at mai-input ang kahilingan sa anyo ng isang string.

3. Kapag ipinadala ng kliyente ang kahilingan, tutugon muli ang server.

Iyon ang paraan na kailangan mong magpatupad ng isang socket program sa Java. Maaari mo ring ipatupad ang mga programang ito sa isang window ng terminal o isang prompt ng utos. Ngunit, tulad ng Eclipse ay mahusay na advanced sa mga tampok nito, maaari mo lamang maisagawa ang parehong mga programa sa isang console.

Dinadala tayo nito sa pagtatapos ng artikulo sa Socket Programming sa Java. Inaasahan kong nagtapon ako ng kaunting ilaw sa iyong kaalaman sa Socket Programming.

Suriin ang ni Edureka, isang pinagkakatiwalaang kumpanya sa pag-aaral sa online na may isang network na higit sa 250,000 nasiyahan na mga nag-aaral na kumalat sa buong mundo. Narito kami upang matulungan ka sa bawat hakbang sa iyong paglalakbay, para sa pagiging isang bukod sa mga katanungang ito sa panayam sa java, nakakakuha kami ng isang kurikulum na idinisenyo para sa mga mag-aaral at propesyonal na nais na maging isang Java Developer.

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento ng artikulong 'Socket Programming in Java' na ito at babalikan ka namin sa lalong madaling panahon.