Java中 UDP 利用多线程,实现网络聊天室
2019-01-04 20:49
281 查看
利用多线程,实现网络聊天室
1:发送端的线程
-
2:接收端的线程
-
3:测试类
-
从上面两个来看,UDP编程时最好不要超过1472(针对以太网),如果要求不 高, 就算超过了1472了,
-
可以超过65507,即包总大小不要超过64k
import java.io.IOException; import java.net.DatagramSocket; public class Test { public static void main(String[] args) throws IOException { //1:创建发送端的实例 SendRunn sr = new SendRunn(new DatagramSocket()); //2:创建发送端的线程 Thread t1 = new Thread(sr); //3:创建接收端的实例 ReceiveRunn rr = new ReceiveRunn(new DatagramSocket(10086)); //4:创建接受端的线程 Thread t2 = new Thread(rr); //5:启动线程 t1.start(); t2.start(); } }
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.util.Scanner; /* * 发送端线程 */ public class SendRunn implements Runnable { //声明发送端的套接字 private DatagramSocket ds; public SendRunn(DatagramSocket ds) { this.ds = ds; } @Override public void run() { try { BufferedReader br = new BufferedReader( new FileReader("斗破苍穹.txt")); char[] ch = new char[1024*1024]; int read = br.read(ch); String info = new String(ch, 0,read); //1数据 byte[] by = info.getBytes(); //1:创建数据包 DatagramPacket dp = new DatagramPacket(by, by.length, InetAddress.getByName("192.168.3.255"), 10086); //2:发送数据宝 ds.send(dp); } catch (IOException e) { e.printStackTrace(); } //关闭套集字 ds.close(); } }
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.util.Date; public class ReceiveRunn implements Runnable { private DatagramSocket ds; public ReceiveRunn(DatagramSocket ds) { super(); this.ds = ds; } @Override public void run() { while(true){ //1:创建空的数据包 byte[] by = new byte[1024*1024]; DatagramPacket dp = new DatagramPacket(by, by.length); try { //2:接受数据,并且把数据封装到数据包中 ds.receive(dp); //3:拆封数据 byte[] data = dp.getData(); int length = dp.getLength(); InetAddress address = dp.getAddress(); String hostName = address.getHostName(); System.out.println(length); System.out.println(hostName+" "+new Date().toLocaleString()); System.out.println(new String(by, 0, length)); } catch (IOException e) { e.printStackTrace(); } } } }
相关文章推荐
- Java基础知识强化之网络编程笔记05:UDP之多线程实现聊天室案例
- Java网络编程 - 基于UDP协议 实现简单的聊天室程序
- Rhyme/ java TCP网络编程 聊天室(群聊与私聊)TCP、多线程、IO流编程完整代码实现
- 用java多线程实现一个控制台聊天室
- Java_乔晓松_Java网络编程UDP实现黑窗口聊天
- Unity&网络:利用UDP实现动态监测局域网在线用户及掉线事件。
- java利用多线程实现异步调用
- Android 网络:基于TCP协议通信,多线程,实现简单的C/S聊天室
- java利用Socket实现聊天室功能实例
- .Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--使用封装的网络服务4[聊天室][使用IE浏览本页]
- 网络编程_TCP_Socket通信_聊天室_客户端多线程_群聊JAVA191-192
- Java网络编程笔记--实现UDP广播发送与接收
- 网络编程_多线程实现聊天室程序
- 基于java网络聊天室--截图实现
- Java WebSocket实现网络聊天室(群聊+私聊)
- Java笔记(9)-网络编程、URL、InetAddress、套接字、Socket、ServerSocket、多线程、UDP、广播数据包、远程调用
- java实现多线程下载网络文件
- .Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--使用封装的网络服务3[聊天室]
- java网络编程,通过TCP,Socket实现多对一的局域网聊天室
- java网络编程--解析通过web.xml文件控制利用过滤器实现编码格式步骤