Java UDP套接字编程(提取数据,以字符串形式存储)
我正在学习使用Java进行TCP和UDP套接字编程,我正在为我的网络课程阅读的一本书有以下内容:Java UDP套接字编程(提取数据,以字符串形式存储),java,sockets,tcp,network-programming,udp,Java,Sockets,Tcp,Network Programming,Udp,我正在学习使用Java进行TCP和UDP套接字编程,我正在为我的网络课程阅读的一本书有以下内容: DatagramPacket receivedPacket = new DatagramPacket(receiveData, receiveData.length); String modifiedSentence = new String(receivedPacket.getData()); 其中receivedPacked只是一个DatagramPacket类型的对象,modifiedce
DatagramPacket receivedPacket = new DatagramPacket(receiveData, receiveData.length);
String modifiedSentence = new String(receivedPacket.getData());
其中receivedPacked只是一个DatagramPacket类型的对象,modifiedcentence存储从服务器返回的内容。getData()在存储数据包之前,将数据包从字节转换为字符串
我的问题是,为什么要创建字符串对象并将转换后的数据包存储/传递给它,而不是使用以下方法:
String modifiedSentence = receivedPacket.getData();
这样不行吗?我认为在Java中,专门创建String类的对象是不切实际的。
DatagramPacket.getData()
返回字节数组而不是字符串。因此,您需要将其转换为字符串以将其分配给字符串
String modifiedcentence=新字符串(receivedPacket.getData())
无论如何,这是错误的。应该是
String modifiedSentence = new String(receivedPacket.getData(), 0, receivedPacket.getLength())
我的问题是,为什么要创建字符串对象并将转换后的数据包存储/传递给它,而不是使用以下方法:
String modifiedSentence = receivedPacket.getData();
String modifiedcentence=receivedPacket.getData()
因为它不编译getData()
返回byte[]
,而不是字符串
我认为在Java中,专门创建String类的对象是不切实际的
只有当参数已经是字符串时。
在本例中不是。哦,我明白了,出于某种原因,.getData()方法的工作还涉及将字节转换为字符串。将执行字符串ModifiedEntence=(字符串)(receivedPacket.getData());工作我可以将接收到的字节类型转换成这样的字符串类型吗?或者它是否需要使用“new”关键字专门创建对象。不,您不能强制转换它。您需要使用新字符串()