区块链技术博客
www.b2bchain.cn

多线程实现简单聊天

这篇文章主要介绍了多线程实现简单聊天的讲解,通过具体代码实例进行24019 讲解,并且分析了多线程实现简单聊天的详细步骤与相关技巧,需要的朋友可以参考下https://www.b2bchain.cn/?p=24019

本文实例讲述了2、树莓派设置连接WiFi,开启VNC等等的讲解。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/7039.html。具体如下:

文章目录

    • 1. 引言
    • 2. 步骤
        • 2.1 创建聊天的多线程
        • 2.2 创建聊天主应用
        • 2.3 调用多线程实现聊天
    • 3. 实现
    • 4. 结果

1. 引言

此文为通过多线程来实现一个简单的模拟聊天应用,发送方和接受方分别开启两个线程,一个线程是发送消息,一个线程是接受消息

2. 步骤

2.1 创建聊天的多线程

继承Runnable接口,重写run方法 

2.2 创建聊天主应用

2.3 调用多线程实现聊天

接受方和发送方分别来实现接口,实现聊天的模拟 

3. 实现

发送消息多线程:

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; import java.net.SocketException;  /**  * @description:发送消息的  * @return  */  public class SendTalk implements Runnable {     DatagramSocket socket = null;     BufferedReader bufferedReader = null;      private Integer fromPort;     private String toIp;     private Integer toPort;      //只需要告诉自己是谁,需要发送到哪里就行     public SendTalk(Integer fromPort, String toIp, Integer toPort) {         this.fromPort = fromPort;         this.toIp = toIp;         this.toPort = toPort;          try {             //准备数据              socket = new DatagramSocket(fromPort);             bufferedReader = new BufferedReader(new InputStreamReader(System.in));         } catch (SocketException e) {             e.printStackTrace();         }     }      @Override     public void run() {          while (true) {             try {                 String data = bufferedReader.readLine();                 byte[] bytes = data.getBytes();                 DatagramPacket packet = new DatagramPacket(bytes, 0, bytes.length, new InetSocketAddress(this.toIp, this.toPort));                  //发送数据                 socket.send(packet);                 if (bytes.equals("bye")) {                     break;                 }             } catch (IOException e) {                 e.printStackTrace();             }         }         socket.close();     } }  

接受消息多线程:

import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException;  /**  * @description:接受消息  * @return  */  public class ReciveTalk implements Runnable {     DatagramSocket socket = null;      private Integer port;     private String msgFrom;      public ReciveTalk(Integer port, String msgFrom) {         this.port = port;         this.msgFrom = msgFrom;          try {             //开启连接             socket = new DatagramSocket(port);         } catch (SocketException e) {             e.printStackTrace();         }     }      @Override     public void run() {         while (true) {             try {                 //准备接受数据                 byte[] bytes = new byte[1024];                 DatagramPacket datagramPacket = new DatagramPacket(bytes, 0, bytes.length);                 socket.receive(datagramPacket);                  //断开连接                 byte[] bytes1 = datagramPacket.getData();                 String receiveData = new String(bytes1, 0, bytes1.length);                  System.out.println(msgFrom + ":" + receiveData);                  if (receiveData.equals("bye")) {                     //存在,则结束                     break;                 }             } catch (IOException e) {                 e.printStackTrace();             }         }         //释放资源         socket.close();     } }  

发送方(学生):

/**  * @description:聊天学生端  * @return  */  public class StudentTalk {     public static void main(String[] args) {         //开启两个线程,一个接受,一个发送数据         new Thread(new SendTalk(6666,"127.0.0.1",7777)).start();          new Thread(new ReciveTalk(8888, "老师")).start();     } }  

接受方(老师):

/**  * @description:聊天老师端  * @return  */  public class TeacherTalk {     public static void main(String[] args) {         //开启两个线程,一个接受数据,一个发送数据         new Thread(new SendTalk(5555,"127.0.0.1",8888)).start();         new Thread(new ReciveTalk(7777,"学生")).start();     } }  

4. 结果

多线程实现简单聊天
多线程实现简单聊天

本文转自互联网,侵权联系删除多线程实现简单聊天

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 多线程实现简单聊天
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们