似乎我写的客户端 - 服务器应用程序确实有效,但似乎并非每次都处理所有数据。Java - UDP通过套接字发送数据..没有记录。所有数据
我在Eclipse env的本地机器上测试它。
服务器:
private void sendData() throws Exception
{
DatagramPacket data = new DatagramPacket(outgoingData, outgoingData.length, clientAddress, clientPort);
InputStream fis = new FileInputStream(responseData);
int a;
while((a = fis.read(outgoingData,0,512)) != -1)
{
serverSocket.send(data);
}
}
客户:
private void receiveData() throws Exception
{
DatagramPacket receiveData = new DatagramPacket(incomingData, incomingData.length);
OutputStream fos = new FileOutputStream(new File("1"+data));
while(true)
{
clientSocket.receive(receiveData);
fos.write(incomingData);
}
}
我曾经有过,如果别人在一段时间(true)循环来检查数据包长度小于512个字节,因此它知道何时打破;
我想有一个问题,那白衣,但似乎这是奥凯现在我只需等待几分钟,然后停止Client.java应用
文件不转移,但原文件是852KB,到目前为止,我得到了777,800,850,但是从来都没有。
您是否尝试过冲洗溪流? – 2012-03-06 18:47:07
UDP是不可靠的。对于UDP该规范规定,UDP将获得来自源的数据包接收器的“尽力而为”,但包可能被丢弃和接收/发送器将永远不会被通知。如果您需要可靠地发送数据,则需要实施某种丢包检测方案或使用TCP。有一点奇怪的是,你在本地意义上丢失了很多数据包,但没有合同规定本地UDP连接必须可靠。 – CodeBlind 2012-03-06 18:48:10
我明白,但我仍然想弄清楚我可以如何帮助尽可能多地获得。 – 2012-03-06 18:50:43