java控制台实现聊天程序
更新时间:2021年07月11日 11:26:32 作者:wuhuizzj
这篇文章主要为大家详细介绍了java控制台实现聊天程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了java控制台实现聊天程序的具体代码,供大家参考,具体内容如下
发送端
package ip.chat; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; public class TalkSend implements Runnable{ DatagramSocket socket = null; BufferedReader reader = null; private int formIP; private String toIP; private int toPort; public TalkSend(int formIP, String toIP, int toPort) { this.formIP = formIP; this.toIP = toIP; this.toPort = toPort; try { socket = new DatagramSocket(); reader = new BufferedReader(new InputStreamReader(System.in)); }catch (Exception e){ e.printStackTrace(); } } @Override public void run() { while (true){ try { String data = reader.readLine(); byte[] datas = data.getBytes(); DatagramPacket packet = new DatagramPacket(datas, 0, datas.length, new InetSocketAddress(this.toIP, this.toPort)); socket.send(packet); if (data.equals("bye")){ break; } }catch (Exception e){ e.printStackTrace(); } } //关闭 socket.close(); } }
服务端
package ip.chat; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; public class TalkReceive implements Runnable{ DatagramSocket socket = null; private int port; //设置消息来源 private String msgFrom; public TalkReceive(int 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[] container = new byte[1024]; DatagramPacket packet = new DatagramPacket(container,0,container.length); socket.receive(packet);//接收包裹 //断开连接 byte[] data = packet.getData(); String receiveData = new String(data, 0, data.length); System.out.println(msgFrom+":"+receiveData); if (receiveData.equals("bye")){ break; } } catch (IOException e) { e.printStackTrace(); } } socket.close(); } }
学生端代码
package ip.chat; public class TalkStudent { public static void main(String[] args) { //开启两个线程 new Thread(new TalkSend(7777,"localhost",9999)).start(); new Thread(new TalkReceive(8888,"老师")).start(); } }
教师端代码
package ip.chat; public class TalkTeacher { public static void main(String[] args) { new Thread(new TalkSend(5555,"localhost",8888)).start(); new Thread(new TalkReceive(9999,"学生")).start(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
浅析SpringBoot2底层注解@Conditional@ImportResource
这篇文章主要为大家介绍了SpringBoot2底层注解@Conditional@ImportResource的分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-05-05Spring Controller接收前端JSON数据请求方式
这篇文章主要为大家介绍了Spring Controller接收前端JSON数据请求方式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-07-07如何解决UnsupportedOperationException异常问题
这篇文章主要介绍了如何解决UnsupportedOperationException异常问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-05-05Java遍历输出指定目录、树形结构所有文件包括子目录下的文件
这篇文章主要介绍了Java遍历输出指定目录、树形结构下的所有文件包括子目录中的文件,需要的朋友可以参考下2015-07-07
最新评论