首页 > 代码库 > UDP聊天
UDP聊天
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;public class ChatDemo { public static void main(String[] args) throws SocketException { /* * 通过UDP协议 完成一个聊天程序。 一个负责发送数据的任务,一个负责接收数据的任务 两个任务需要同时执行,可以使用多线程技术 */ //创建socket服务 //发送端 DatagramSocket send = new DatagramSocket(8888); DatagramSocket rece = new DatagramSocket(10001); new Thread(new Send(send)).start(); new Thread(new Rece(rece)).start(); }}// 负责发送的任务,通过UDP的socket发送class Send implements Runnable { // 任务对象一建立,需要socket对象 private DatagramSocket ds; public Send(DatagramSocket ds) { super(); this.ds = ds; } @Override public void run() { // 具体的发送数据的任务内容 // 1.要发送的数据来自哪里?键盘录入 BufferedReader bufr = new BufferedReader(new InputStreamReader( System.in)); // 1.1读取数据 String line = null; try { while ((line = bufr.readLine()) != null) { // 1.2将数据封装成字节数组 // 2.将数据封装到数据包中。 byte[] buf = line.getBytes(); DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("192.168.17.255"), 10001);//255是广播,在该网路段的所有主机都能收到 // 3.将数据包发送出去。 ds.send(dp); if ("over".equals(line)) { break; } } ds.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}// 负责接收的任务class Rece implements Runnable { private DatagramSocket ds; public Rece(DatagramSocket ds) { super(); this.ds = ds; } @Override public void run() { while (true) { // 接收的具体的任务内容 // 1.因为接收的数据最终都会存储到数据包中,而数据包中必须有字节数组。 byte[] buf = new byte[1024]; // 2.创建数据包对象 DatagramPacket dp = new DatagramPacket(buf, buf.length); // 3.将数据存储到数据包中 try { ds.receive(dp); // 4.获取数据 String ip = dp.getAddress().getHostAddress(); String data = new String(dp.getData(), 0, dp.getLength()); System.out.println(ip + ":" + data); if("over".equals(data)){ System.out.println(ip+"......离开聊天室"); } } catch (IOException e) { e.printStackTrace(); } } }}
UDP聊天
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。