TCP/UDP socket UDP接收数据——已测试通过
发布时间
阅读量:
阅读量
public class UDPClient {
/**接收UDP制式的十六进制数据
* @throws java.io.IOException
*/
public void ReceiveDataSender() throws java.io.IOException {
System.out.println("开始接收来自发送方的数据……");
DatagramSocket receiverPort = null;
try {
receiverPort = new DatagramSocket(2000); // 实现UDP通信配置
}
} try {
// 捕获本地接收端口已使用的异常
打印消息到标准输出并返回状态码
}
while (true) {
byte[] buf = new byte[1024];
}
创建一个DatagramPacket实例dp,并传递缓冲区buf及其长度。
通过绑定接收数据包dp。
首先获取数据包地址,并提取主机地址存入变量ip。
接着获取数据包中的远程主机端口号存入变量port。
随后将数据部分转换为十六进制字符串text。
如果text等于"exit"则进入循环体。
最后根据情况输出相应的连接信息或退出信息。
}
ds.close();
}
/**
- 将 byte 数组转化为十六进制字符串
- @param bytes
- byte[] 数组
- @param begin
- 起始位置
- @param end
- 结束位置
- @return byte 数组的十六进制字符串表示
*/
private String bytesToHex(byte[] bytes, int begin, int end) {
StringBuilder hexBuilder = new StringBuilder(2 * (end - begin));
for (int i = begin; i < end; i++) {
hexBuilder.append(Character.forDigit((bytes[i] & 0xF0) >> 4, 16)); // 转化高四位
hexBuilder.append(Character.forDigit((bytes[i] & 0x0F), 16)); // 转化低四位
//hexBuilder.append(' '); // 加一个空格将每个字节分隔开
}
return hexBuilder.toString().toUpperCase();
}
}
全部评论 (0)
还没有任何评论哟~
