【问题标题】:Stop and wait socket programming with UDP使用 UDP 停止并等待套接字编程
【发布时间】:2011-07-17 15:12:14
【问题描述】:

希望创建一个 Java 停止等待 UDP 服务器和客户端,但我一开始就遇到了一些问题。我已经制作了一个简单的 UDP 客户端和服务器,没有停止等待部分,但我现在想学习如何更改它。如何使用 Java 套接字发送 ACK 并实现超时?

有人可以发布一些示例供我在实施中使用吗?

【问题讨论】:

  • 请发布您现在拥有的重要部分,以及您遇到的问题。还有,stop-and-wait 是什么意思?
  • 停止并等待意味着客户端向服务器发送消息,然后在等待服务器确认时超时。如果在等待确认时所有时间都到期,则重新发送数据包,否则发送下一个数据包
  • 停止等待协议是一次发送1个数据包的过程,并等待客户端在发送下一个数据包之前发送回一个ack。
  • 好的,我已经在我的客户端上调用了clientSocket.setSoTimeout(1),所以现在我希望它检查是否收到了ACK,以及它是否没有再次发送消息......是否有某种 if(ACK RECEIVED) 套接字方法?

标签: java sockets udp


【解决方案1】:

如果您在 UDP 中实现此功能,则发送和接收确认由您决定。这似乎是你想要的这个停止和等待协议。就伪代码而言,你会想要这样的东西:

int Send(msg)
{
    char rcvBuf[];
    sentBytes = sock.send(msg);
    sock.rcv(rcvBuf);
    return sentBytes;
}

int Recv(rcvBuf)
{
    String ackMsg = "ACK";
    length = sock.rcv(rcvBuf);
    sock.send(ackMsg);
    return length;
}

每次发送后,您都会等待确认消息进入,每次收到时,您都会发送确认消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    相关资源
    最近更新 更多