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();
}
}
先启动服务端,再启动客户端,在客户端的控制台输入消息并回车,就可以发送消息给客户端了,客户端收到消息后,马上会回复一个消息
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
热门推荐
10 新人红包祝福语简短精辟
11 幼师给毕业祝福语简短
12 生日高考祝福语妹妹简短
13 下飞机祝福语简短英文
14 元宵发客户祝福语简短
15 爸妈金婚文案祝福语简短
16 新郎朋友红包祝福语简短
17 虎年五一祝福语大全简短
18 出阁宴祝福语姐姐简短