logo

Java Socket Programmering

Java Socket-programmering bruges til kommunikation mellem de applikationer, der kører på forskellige JRE.

Java Socket-programmering kan være forbindelsesorienteret eller forbindelsesløs.

Socket- og ServerSocket-klasser bruges til forbindelsesorienteret socketprogrammering og DatagramSocket- og DatagramPacket-klasser bruges til forbindelsesløs socketprogrammering.

Klienten i socket-programmering skal kende to oplysninger:

  1. IP-adresse på server, og
  2. Portnummer.

Her skal vi lave envejs klient- og serverkommunikation. I denne applikation sender klienten en besked til serveren, serveren læser beskeden og udskriver den. Her bruges to klasser: Socket og ServerSocket. Socket-klassen bruges til at kommunikere klient og server. Gennem denne klasse kan vi læse og skrive beskeder. ServerSocket-klassen bruges på serversiden. Accept()-metoden for ServerSocket-klassen blokerer konsollen, indtil klienten er tilsluttet. Efter en vellykket forbindelse af klienten returnerer den forekomsten af ​​Socket på serversiden.

Socket-programmering i Java

Stikkontakt klasse

En socket er simpelthen et slutpunkt for kommunikation mellem maskinerne. Socket-klassen kan bruges til at oprette en socket.

Vigtige metoder

MetodeBeskrivelse
1) offentlig InputStream getInputStream()returnerer den InputStream, der er forbundet med denne socket.
2) offentlig OutputStream getOutputStream()returnerer OutputStream tilsluttet med denne socket.
3) offentlig synkroniseret void close()lukker denne stikkontakt

ServerSocket klasse

ServerSocket-klassen kan bruges til at oprette en serversocket. Dette objekt bruges til at etablere kommunikation med klienterne.

Vigtige metoder

MetodeBeskrivelse
1) offentlig Socket accept()returnerer socket og etablerer en forbindelse mellem server og klient.
2) offentlig synkroniseret void close()lukker serverstikket.

Eksempel på Java Socket Programmering

Oprettelse af server:

For at oprette serverapplikationen skal vi oprette forekomsten af ​​ServerSocket-klassen. Her bruger vi 6666 portnummer til kommunikationen mellem klienten og serveren. Du kan også vælge et hvilket som helst andet portnummer. Accept()-metoden venter på klienten. Hvis klienter forbinder med det givne portnummer, returnerer det en forekomst af Socket.

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

Opretter klient:

For at oprette klientapplikationen skal vi oprette forekomsten af ​​Socket-klassen. Her skal vi videregive IP-adressen eller værtsnavnet på serveren og et portnummer. Her bruger vi 'localhost', fordi vores server kører på samme system.

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

Lad os se en enkel Java-socket-programmering, hvor klienten sender en tekst, og serveren modtager og udskriver den.

Fil: MyServer.java

 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);} } } 

Fil: MyClient.java

 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);} } } 
download dette eksempel

For at udføre dette program skal du åbne to kommandoprompter og udføre hvert program ved hver kommandoprompt som vist i nedenstående figur.

Efter at have kørt klientapplikationen, vises en meddelelse på serverkonsollen.

Java-netværksprogrammering

Eksempel på Java Socket-programmering (læs-skriv på begge sider)

I dette eksempel vil klienten først skrive til serveren, derefter vil serveren modtage og udskrive teksten. Derefter vil serveren skrive til klienten, og klienten vil modtage og udskrive teksten. Trinnet går videre.

Fil: MyServer.java

 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(); }} 

Fil: MyClient.java

 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(); }}