Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java UDP套接字编程(提取数据,以字符串形式存储)_Java_Sockets_Tcp_Network Programming_Udp - Fatal编程技术网

Java 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

我正在学习使用Java进行TCP和UDP套接字编程,我正在为我的网络课程阅读的一本书有以下内容:

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”关键字专门创建对象。不,您不能强制转换它。您需要使用新字符串()