Java網路編程---回顯聊天__演算法

來源:互聯網
上載者:User
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class EchoServer {private int port=8080;private ServerSocket esSocket;private int count=1;public EchoServer() throws IOException{esSocket=new ServerSocket(port);System.out.println("EchoServer 伺服器啟動...");//System.out.println(esSocket.getLocalSocketAddress()+" : "+esSocket.getLocalPort());}public void service(){while(true){Socket socket=null;System.out.println("Server start");try{socket=esSocket.accept();//System.out.println("New connect : "+count);Thread workthread=new Thread( new Handler(socket));workthread.start();}catch(IOException e){e.printStackTrace();}}}public static void main(String[] args) {// TODO Auto-generated method stubtry{new EchoServer().service();}catch(Exception e){e.printStackTrace();}}}class Handler implements Runnable{private Socket socket;String msg=null;public Handler(Socket socket){this.socket=socket;}private PrintWriter getWriter(Socket socket) throws IOException{OutputStream socketOut =socket.getOutputStream();return new PrintWriter(socketOut,true);}private BufferedReader getReader(Socket socket) throws IOException{InputStream socketIn=socket.getInputStream();return new BufferedReader(new InputStreamReader(socketIn));}public void run(){try {System.out.println("New connect : "+socket.getInetAddress()+" : "+socket.getPort());//System.out.println("Local "+socket.getLocalSocketAddress()+" : "+socket.getLocalPort());BufferedReader br=getReader(socket);PrintWriter pw=getWriter(socket);while( (msg=br.readLine()) !=null){System.out.println("receive : "+msg);pw.println("echo :"+msg);if( msg.equals("bye")==true ){System.out.println("======== exit ========");//flag=true;socket.close();break;}}} catch (Exception e) {e.printStackTrace();}finally{try{if(socket !=null){socket.close();}}catch(Exception e){e.printStackTrace();}}}}
 
 
 
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.net.InetAddress;import java.net.InetSocketAddress;import java.net.Socket;public class EchoClient {private String host="localhost";private String remoteHost="109.130.246.96";private String remoteBaidu="http:\\www.baidu.com";private int port=8080;private Socket ecSocket;private Boolean flag=false;public EchoClient() throws IOException{System.out.println("==== client start ");System.out.println("==== client try to connect server ");ecSocket=new Socket(host,port);}private PrintWriter getWriter(Socket socket)throws IOException{OutputStream socketOut=socket.getOutputStream();return new PrintWriter(socketOut,true);}private BufferedReader getReader(Socket socket)throws IOException{InputStream socketIn =socket.getInputStream();return new BufferedReader(new InputStreamReader(socketIn));}public void talk() throws IOException{String msg=null;while(true){flag=false;try{BufferedReader br=getReader(ecSocket);PrintWriter pw=getWriter(ecSocket);BufferedReader localReader=new BufferedReader(new InputStreamReader(System.in));while( ( msg=localReader.readLine())!=null){System.out.println("send :"+msg);pw.println(msg);System.out.println(br.readLine());if(msg.equals("bye")){flag=true;System.out.println("======== exit ========");break;}}}catch(IOException e ){e.printStackTrace();}finally {try{//if(ecSocket==null)ecSocket.close();}catch(IOException e){e.printStackTrace();}}if(flag)break;}}public static void main(String[] args) {// TODO Auto-generated method stubtry {new EchoClient().talk();} catch (IOException e) {// TODO: handle exceptione.printStackTrace();}}}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.