Advertisement

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)

还没有任何评论哟~