java中UDP通信,两边都怎么也接收不了,都是阻塞状态。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中UDP通信,两边都怎么也接收不了,都是阻塞状态。相关的知识,希望对你有一定的参考价值。
一边是:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UdpServer
public static void main(String[] args) throws Exception
DatagramSocket socket = new DatagramSocket();
String str = "hello world";
DatagramPacket packet = new DatagramPacket(str.getBytes(), str.length(), InetAddress.getByName("localhost"),
30000);
socket.send(packet);
byte[] buffer = new byte[1000];
DatagramPacket packet2 = new DatagramPacket(buffer, 100);
socket.receive(packet2);
System.out.println(new String(buffer, 0, packet2.getLength()));
socket.close();
另一边是:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UdpServer2
public static void main(String[] args) throws Exception
//创建数据报套接字并将其绑定到本地主机上的指定端口30000
DatagramSocket socket=new DatagramSocket(30000);
byte[] buffer=new byte[1024];
DatagramPacket packet=new DatagramPacket(buffer,1000);
socket.receive(packet);
System.out.println(new String(buffer,0,packet.getLength()));
String str="welcome";
//构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。length 参数必须小于等于 buffer.length。
DatagramPacket packet2=new DatagramPacket(str.getBytes(),str.length(),packet.getAddress(),packet.getPort());
socket.send(packet2);
socket.close();
2:确保30000端口可被访问
我用udp发送一个16进制包,接收端怎么解析。
我用tcp/udp发送了一个16进制数据,接收端怎么接收才不会乱码。。(正常显示数据)
参考技术A 数据传输都是以字节流方式发送端包装成 byte[]数组,发送就可以了
和什么进制数据没有关系,进制只是数据写的方式。
不同的进制写法只是程序员看的,在内存里都是一样的 参考技术B 接受和发送都是针对byte而言的你要是发送16进制 就先把16进制数转换成byte数组同理接收时候先接收byte数组 在转成16进制就是了本回答被提问者采纳
以上是关于java中UDP通信,两边都怎么也接收不了,都是阻塞状态。的主要内容,如果未能解决你的问题,请参考以下文章