udp聊天室--简易
2024-09-04 02:18:07
package 聊天;
/*一切随便消逝吧*/
import java.net.DatagramSocket;
import java.net.SocketException; public class ChatDemo {
public static void main(String[] args) throws Exception { DatagramSocket send=new DatagramSocket();
DatagramSocket rece=new DatagramSocket(10001);
new Thread(new Send(send)).start();
new Thread(new Rece(rece)).start();
}
}
/*总结
* 第一步建立字节套服务。Socket
* 第二封装包 datagrampack
* 处理数据包
* 结束
*
*
* */
package 聊天;
/*
* udp接收端 建立udp socket 创建数据包,用于存储接收到的数据。方便用数据包对象的方法解析这些数据
* 使用socket服务的receive方法将接收到得数据储存到数据包中 通过数据包的方法解析数据包中德数据。 关闭资源
*
*/
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket; public class Rece implements Runnable {
private DatagramSocket ds; public Rece(DatagramSocket ds) { this.ds = ds;
} @Override
public void run() { try {
while (true) {
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
ds.receive(dp);
String text = new String(dp.getData(), 0, dp.getLength());
System.out.println(dp.getAddress().getHostAddress()+":::"+text);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
package 聊天; import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
/*
* 创建UDP传输的发送端 思路:建立udp的socket服务器 将要发送的数据封装到数据包中 通过udp的socket服务将数据包发送出去 关闭服务
*
*/
public class Send implements Runnable {
private DatagramSocket ds; public Send(DatagramSocket ds) { this.ds = ds;
} @Override
public void run() { try {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String line = null; while ((line = bf.readLine()) != null) { byte[] buf = line.getBytes();
// 使用DatagramPacket封装数据
DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("127.0.0.1"), 10001);
ds.send(dp);
if("886".equals(line)){
break;
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
ds.close();
e.printStackTrace();
} } }
最新文章
- 使用SVN同步资源后图标样式的详细解读
- 网页特殊符号HTML代码大全
- DigitalOcean上使用Tornado+MongoDB+Nginx+Supervisor+DnsPod快速搭建个人博客
- Spring AOP 深入剖析
- 黑马程序员——vim编辑器的使用
- Android 多渠道打包,上百渠道,秒打签名
- VC各种方法获得的窗口句柄
- Linux下区分物理CPU、逻辑CPU和CPU核数
- es6 箭头函数(arrow function) 学习笔记
- MySQL的常用操作命令详解
- get请求URL的转码
- Navicat还原出现Finished - Stopped before completion的问题
- tailf、tail -f、tail -F三者区别(转)
- windows 匿名管道: 父进程与子进程通信 (进程间通信之CreatePipe)
- Vue通过id跳转到商品详情页
- redis哨兵模式,数据尽量少的丢失
- python中base64编码与解码
- cpu-z for ubuntu 12.04 64bit : cpu-g
- CS229 6.8 Neurons Networks implements of PCA ZCA and whitening
- ThinkPHP5分页样式设置