java学习笔记之TCP实现的简单聊天

Posted 猿上生活

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java学习笔记之TCP实现的简单聊天相关的知识,希望对你有一定的参考价值。

简单聊天Demo

使用tcp协议实现的简单聊天功能(非常简单的)

  思想:使用2个线程,一个线程是用来接收消息的,另一个线程是用来发消息的。

  客户端Demo代码:

 1 public class SendDemo {
 2     public static void main(String[] args) throws Exception{
 3         Socket socket= new Socket(InetAddress.getLocalHost(),8888);
 4         SendImpl  sendImpl= new SendImpl(socket);
 5         //发送的线程
 6         new Thread(sendImpl).start();
 7         //接收的线程
 8         ReciveImpl reciveImpl=new ReciveImpl(socket);
 9         new Thread(reciveImpl).start();
10     }
11 
12 }

  服务器端Demo代码:

 1 public class ServerDemo {
 2     public static void main(String[] args) throws Exception {
 3         ServerSocket serverSocket =new ServerSocket(8888);
 4         Socket socket=serverSocket.accept();
 5         SendImpl sendImpl= new SendImpl(socket);
 6         new Thread(sendImpl).start();
 7         ReciveImpl reciveImpl=new ReciveImpl(socket);
 8         new Thread(reciveImpl).start();
 9     }
10 
11 }

  发送线程的Demo代码:

 1 public class SendImpl implements Runnable{
 2     private Socket socket;
 3     public SendImpl(Socket socket) {
 4         this.socket=socket;
 5         // TODO Auto-generated constructor stub
 6     }
 7     @Override
 8     public void run() {
 9         Scanner scanner=new Scanner(System.in);
10         while(true){
11             try {
12                 OutputStream outputStream = socket.getOutputStream();
13                 String  string= scanner.nextLine();
14                 outputStream.write(string.getBytes());
15             } catch (IOException e) {
16                 // TODO Auto-generated catch block
17                 e.printStackTrace();
18             }
19         }
20     }
21 
22 }

  接收线程的Demo代码:

 1 public class ReciveImpl implements Runnable {
 2     private Socket socket;
 3     public ReciveImpl(Socket socket) {
 4         this.socket=socket;
 5         // TODO Auto-generated constructor stub
 6     }
 7     @Override
 8     public void run() {
 9         while(true ){
10             try {
11                 InputStream inputStream = socket.getInputStream();
12                 byte[] b=new byte[1024];
13                 int len= inputStream.read(b);
14                 System.out.println("收到消息:"+new String(b,0,len));
15                 
16             } catch (IOException e) {
17                 // TODO Auto-generated catch block
18                 e.printStackTrace();
19             }
20         }
21     }
22 
23 }

 

以上是关于java学习笔记之TCP实现的简单聊天的主要内容,如果未能解决你的问题,请参考以下文章

Java利用TCP编程实现简单聊天室

#星光计划2.0#Harmonyos网络通信真机Demo演练之TCP聊天室

Java案例:基于TCP的简单聊天程序

1500行代码!拥有自己的聊天室------ socket聊天室实现(GUI,线程,TCP)

java网络编程TCP/UDP笔记

Java网络编程基础— 基于TCP的NIO简单聊天系统