logo

Програмирање Јава соцкета

Јава Соцкет програмирање се користи за комуникацију између апликација које раде на различитим ЈРЕ.

Програмирање Јава соцкета може бити оријентисано на везу или без везе.

Класе Соцкет и СерверСоцкет се користе за програмирање сокета оријентисаних на повезивање, а класе ДатаграмСоцкет и ДатаграмПацкет се користе за програмирање сокета без повезивања.

Клијент у програмирању сокета мора да зна две информације:

  1. ИП адреса сервера и
  2. Број порта.

Овде ћемо успоставити једносмерну комуникацију између клијента и сервера. У овој апликацији, клијент шаље поруку серверу, сервер чита поруку и штампа је. Овде се користе две класе: Соцкет и СерверСоцкет. Класа Соцкет се користи за комуникацију клијента и сервера. Кроз овај час можемо читати и писати поруке. Класа СерверСоцкет се користи на страни сервера. Метод аццепт() класе СерверСоцкет блокира конзолу док се клијент не повеже. Након успешног повезивања клијента, враћа инстанцу Соцкет-а на страни сервера.

Програмирање сокета у Јави

Соцкет цласс

Утичница је једноставно крајња тачка за комуникацију између машина. Класа Соцкет се може користити за креирање утичнице.

Важне методе

МетодОпис
1) јавни ИнпутСтреам гетИнпутСтреам()враћа ИнпутСтреам повезан са овом утичницом.
2) јавни ОутпутСтреам гетОутпутСтреам()враћа ОутпутСтреам повезан са овом утичницом.
3) јавна синхронизована воид цлосе()затвара ову утичницу

СерверСоцкет цласс

Класа СерверСоцкет се може користити за креирање серверске утичнице. Овај објекат се користи за успостављање комуникације са клијентима.

Важне методе

МетодОпис
1) јавни соцкет аццепт()враћа утичницу и успоставља везу између сервера и клијента.
2) јавна синхронизована воид цлосе()затвара утичницу сервера.

Пример програмирања Јава соцкета

Креирање сервера:

Да бисмо креирали серверску апликацију, потребно је да креирамо инстанцу класе СерверСоцкет. Овде користимо број порта 6666 за комуникацију између клијента и сервера. Такође можете изабрати било који други број порта. Метод аццепт() чека клијента. Ако се клијенти повежу са датим бројем порта, он враћа инстанцу Соцкет-а.

 ServerSocket ss=new ServerSocket(6666); Socket s=ss.accept();//establishes connection and waits for the client 

Креирање клијента:

Да бисмо креирали клијентску апликацију, потребно је да креирамо инстанцу класе Соцкет. Овде треба да проследимо ИП адресу или име хоста сервера и број порта. Овде користимо 'лоцалхост' јер наш сервер ради на истом систему.

 Socket s=new Socket('localhost',6666); 

Хајде да видимо једноставно програмирање Јава соцкета где клијент шаље текст, а сервер га прима и штампа.

Датотека: МиСервер.јава

 import java.io.*; import java.net.*; public class MyServer { public static void main(String[] args){ try{ ServerSocket ss=new ServerSocket(6666); Socket s=ss.accept();//establishes connection DataInputStream dis=new DataInputStream(s.getInputStream()); String str=(String)dis.readUTF(); System.out.println('message= '+str); ss.close(); }catch(Exception e){System.out.println(e);} } } 

Фајл: МиЦлиент.јава

 import java.io.*; import java.net.*; public class MyClient { public static void main(String[] args) { try{ Socket s=new Socket('localhost',6666); DataOutputStream dout=new DataOutputStream(s.getOutputStream()); dout.writeUTF('Hello Server'); dout.flush(); dout.close(); s.close(); }catch(Exception e){System.out.println(e);} } } 
преузмите овај пример

Да бисте извршили овај програм, отворите две командне линије и покрените сваки програм у свакој командној линији као што је приказано на доњој слици.

Након покретања клијентске апликације, на конзоли сервера ће се приказати порука.

Јава мрежно програмирање

Пример програмирања Јава соцкета (читај-пиши са обе стране)

У овом примеру, клијент ће прво писати серверу, а затим ће сервер примити и одштампати текст. Затим ће сервер писати клијенту, а клијент ће примити и одштампати текст. Корак иде даље.

Датотека: МиСервер.јава

 import java.net.*; import java.io.*; class MyServer{ public static void main(String args[])throws Exception{ ServerSocket ss=new ServerSocket(3333); Socket s=ss.accept(); DataInputStream din=new DataInputStream(s.getInputStream()); DataOutputStream dout=new DataOutputStream(s.getOutputStream()); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String str='',str2=''; while(!str.equals('stop')){ str=din.readUTF(); System.out.println('client says: '+str); str2=br.readLine(); dout.writeUTF(str2); dout.flush(); } din.close(); s.close(); ss.close(); }} 

Фајл: МиЦлиент.јава

 import java.net.*; import java.io.*; class MyClient{ public static void main(String args[])throws Exception{ Socket s=new Socket('localhost',3333); DataInputStream din=new DataInputStream(s.getInputStream()); DataOutputStream dout=new DataOutputStream(s.getOutputStream()); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String str='',str2=''; while(!str.equals('stop')){ str=br.readLine(); dout.writeUTF(str); dout.flush(); str2=din.readUTF(); System.out.println('Server says: '+str2); } dout.close(); s.close(); }}