java学习之利用TCP实现的简单聊天示例代码
TCP
TCP协议是面向连接、保证高可靠性(数据无丢失、数据无失序、数据无错误、数据无重复到达)传输层协议。
TCP通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。
本文主要介绍了java利用TCP实现简单聊天的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
示例代码
使用tcp协议实现的简单聊天功能(非常简单的)
思想:使用2个线程,一个线程是用来接收消息的,另一个线程是用来发消息的。
客户端Demo代码:
publicclassSendDemo{
publicstaticvoidmain(String[]args)throwsException{
Socketsocket=newSocket(InetAddress.getLocalHost(),8888);
SendImplsendImpl=newSendImpl(socket);
//发送的线程
newThread(sendImpl).start();
//接收的线程
ReciveImplreciveImpl=newReciveImpl(socket);
newThread(reciveImpl).start();
}
}
服务器端Demo代码:
publicclassServerDemo{
publicstaticvoidmain(String[]args)throwsException{
ServerSocketserverSocket=newServerSocket(8888);
Socketsocket=serverSocket.accept();
SendImplsendImpl=newSendImpl(socket);
newThread(sendImpl).start();
ReciveImplreciveImpl=newReciveImpl(socket);
newThread(reciveImpl).start();
}
}
发送线程的Demo代码:
publicclassSendImplimplementsRunnable{
privateSocketsocket;
publicSendImpl(Socketsocket){
this.socket=socket;
//TODOAuto-generatedconstructorstub
}
@Override
publicvoidrun(){
Scannerscanner=newScanner(System.in);
while(true){
try{
OutputStreamoutputStream=socket.getOutputStream();
Stringstring=scanner.nextLine();
outputStream.write(string.getBytes());
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
}
接收线程的Demo代码:
publicclassReciveImplimplementsRunnable{
privateSocketsocket;
publicReciveImpl(Socketsocket){
this.socket=socket;
//TODOAuto-generatedconstructorstub
}
@Override
publicvoidrun(){
while(true){
try{
InputStreaminputStream=socket.getInputStream();
byte[]b=newbyte[1024];
intlen=inputStream.read(b);
System.out.println("收到消息:"+newString(b,0,len));
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。