Can always be entered, not a question and answer:
Open two threads, one responsible for receiving, one responsible for the hair.
1. Run First:
Packagecom.zr.javase0825;ImportJava.io.BufferedReader;ImportJava.io.BufferedWriter;Importjava.io.IOException;ImportJava.io.InputStreamReader;ImportJava.io.OutputStreamWriter;ImportJava.net.ServerSocket;ImportJava.net.Socket;ImportJava.util.Scanner; Public classUser1ImplementsRunnable {//String pdd= "read";Socket sock; //Socket SOCKC; Public Static voidMain (string[] args) {User1 u1=NewUser1 (); ServerSocket Ssock; Try{Ssock=NewServerSocket (1234); U1.sock=ssock.accept (); //u1.sockc=new Socket ("127.0.0.1", 5678);Thread T1=NewThread (U1, "read"); Thread T2=NewThread (U1, "write"); T1.start (); T2.start (); } Catch(IOException e) {//TODO auto-generated Catch blockE.printstacktrace (); } } Public voidRead (Socket sock) {Try{BufferedReader Buff=NewBufferedReader (NewInputStreamReader (Sock.getinputstream ())); System.out.println ("User2:" +buff.readline ()); } Catch(IOException e) {//TODO auto-generated Catch blockE.printstacktrace (); } } Public voidWrite (Socket sockc) {Try{bufferedwriter Buff=NewBufferedWriter (NewOutputStreamWriter (Sockc.getoutputstream ())); BufferedReader BF=NewBufferedReader (NewInputStreamReader (system.in)); String Str=Bf.readline (); Buff.write (str+ "\ n"); Buff.flush (); } Catch(IOException e) {//TODO auto-generated Catch blockE.printstacktrace (); }} @Override Public voidrun () {if(Thread.CurrentThread (). GetName (). Equals ("read")) while(true) read (sock); Else while(true) write (sock); } }
After running:
Packagecom.zr.javase0825;ImportJava.io.BufferedReader;ImportJava.io.BufferedWriter;Importjava.io.IOException;ImportJava.io.InputStreamReader;ImportJava.io.OutputStreamWriter;ImportJava.net.Socket;ImportJava.util.Scanner; Public classUser2ImplementsRunnable {//String pdd= "read";Socket sock; //Socket SOCKC; Public Static voidMain (string[] args) {User2 u1=NewUser2 (); //ServerSocket Ssock; Try { //Ssock = new ServerSocket (5678); //u1.sock=ssock.accept ();U1.sock=NewSocket ("127.0.0.1", 1234); Thread T1=NewThread (U1, "read"); Thread T2=NewThread (U1, "write"); T1.start (); T2.start (); } Catch(IOException e) {//TODO auto-generated Catch blockE.printstacktrace (); } } Public voidRead (Socket sock) {Try{BufferedReader Buff=NewBufferedReader (NewInputStreamReader (Sock.getinputstream ())); System.out.println ("User2:" +buff.readline ()); } Catch(IOException e) {//TODO auto-generated Catch blockE.printstacktrace (); } } Public voidWrite (Socket sockc) {Try{bufferedwriter Buff=NewBufferedWriter (NewOutputStreamWriter (Sockc.getoutputstream ())); BufferedReader BF=NewBufferedReader (NewInputStreamReader (system.in)); String Str=Bf.readline (); Buff.write (str+ "\ n"); Buff.flush (); } Catch(IOException e) {//TODO auto-generated Catch blockE.printstacktrace (); }} @Override Public voidrun () {Scanner in=NewScanner (system.in); if(Thread.CurrentThread (). GetName (). Equals ("read")) while(true) read (sock); Else while(true) write (sock); } }
Java Learning note Socket based on the TCP protocol