gpt4 book ai didi

使用 std libs 实现 Java TFTP - 如何确认数据包?

转载 作者:行者123 更新时间:2023-12-01 15:29:06 26 4
gpt4 key购买 nike

我尝试实现一个 TFTP 客户端/服务器。根据 RFC 1350,我一切都正确,现在唯一缺少的是确认接收数据包的人(无论是客户端还是服务器)接收到的每个数据包。

  1. 服务器发送数据报包
  2. 客户端收到数据报包并在数据包中发回 ACK(“确认”)消息
  3. 服务器发送下一个数据包

如果客户端在 20 秒内没有发送 ACK,则服务器会再次传输相同的数据包,直到收到客户端的 ACK。

这是我发送和接收数据包的方法。它们都可以工作,我只需要添加上面的内容,但我完全不知道如何实现它。

服务器:

private void receiveData() throws Exception
{
Calendar cal = Calendar.getInstance();
SimpleDateFormat prefix = new SimpleDateFormat(date_format);
String date = prefix.format(cal.getTime()).toString();

DatagramPacket receiveData = new DatagramPacket(incomingData, incomingData.length);
OutputStream fos = new FileOutputStream(new File(date+data));

while(true)
{
clientSocket.receive(receiveData);
if(receiveData.getLength() == 512)
{
fos.write(receiveData.getData());
} else {
fos.write(receiveData.getData(), receiveData.getOffset(), receiveData.getLength());
break;
}
}
fos.close();
clientSocket.close();
}

客户:

    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) {
data.setLength(a);
serverSocket.send(data);
Thread.sleep(5);
}
fis.close();

我刚刚学习网络编程,因此非常感谢您提供任何建议或代码示例。

最佳答案

问题已解决:

  1. sendData() 发送数据包
  2. receiveData() 获取数据包并将其发回
  3. sendData() 检查数据包是否与发送的数据包相同
  4. sendData() 如果是,则发送下一个数据或再次传输相同的数据

关于使用 std libs 实现 Java TFTP - 如何确认数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9780259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com