java实现简单TCP聊天程序
本文实例为大家分享了java实现TCP聊天程序的具体代码,供大家参考,具体内容如下
服务端代码:
packagecom.test.server; importjava.io.DataInputStream; importjava.io.DataOutputStream; importjava.io.IOException; importjava.net.ServerSocket; importjava.net.Socket; publicclassServer{ publicstaticvoidmain(String[]args){ newServer().startServer(); } publicvoidstartServer(){ try{ //服务器在9990端口监听客户端的连接 ServerSocketss=newServerSocket(9999); System.out.println("serverislistening..."); while(true){ //阻塞的accept方法,当一个客户端连接上,才会返回Socket对象 Sockets=ss.accept(); System.out.println("aclienthasconnected!"); //开启线程处理通信 newCommunicateThread(s).start(); } }catch(IOExceptione){ e.printStackTrace(); } } publicclassCommunicateThreadextendsThread{ Socketsocket; DataInputStreamdis; DataOutputStreamdos; publicCommunicateThread(Socketsocket){ this.socket=socket; try{ dis=newDataInputStream(socket.getInputStream()); dos=newDataOutputStream(socket.getOutputStream()); }catch(IOExceptione){ e.printStackTrace(); } } @Override publicvoidrun(){ super.run(); //读取客户端发过来的消息 Stringmsg=null; try{ while((msg=dis.readUTF())!=null){ System.out.println("clientsendmsg:"+msg); StringreplyMsg="serverreply:"+msg; dos.writeUTF(replyMsg); System.out.println("serverreplymsg:"+replyMsg); } }catch(IOExceptione){ e.printStackTrace(); } } } }
客户端代码:
packagecom.test.client; importjava.io.DataInputStream; importjava.io.DataOutputStream; importjava.io.IOException; importjava.net.Socket; importjava.util.Scanner; publicclassClient{ publicstaticvoidmain(String[]args){ newClient().startClient(); } publicvoidstartClient(){ try{ //连接到服务器 Socketsocket=newSocket("localhost",9999); DataInputStreamdis=newDataInputStream(socket.getInputStream()); DataOutputStreamdos=newDataOutputStream(socket.getOutputStream()); Scannerscanner=newScanner(System.in); Stringline=null; listenServerReply(dis); while((line=scanner.nextLine())!=null){//读取从键盘输入的一行 dos.writeUTF(line);//发给服务端 System.out.println("clientsendmsg:"+line); } }catch(Exceptione){ e.printStackTrace(); } } //监听服务端回复的消息 publicvoidlistenServerReply(finalDataInputStreamdis){ newThread(){ @Override publicvoidrun(){ super.run(); Stringline=null; try{ while((line=dis.readUTF())!=null){ System.out.println("clientreceivemsgfromserver:"+line); } }catch(IOExceptione){ e.printStackTrace(); } } }.start(); } }
先启动服务端,再启动客户端,在客户端的控制台输入消息并回车,就可以发送消息给客户端了,客户端收到消息后,马上会回复一个消息
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。