如何实现可靠的UDP协议?

时间:2016-02-15 08:08:18

标签: c# networking udp

我知道如何发送和接收UDP和TCP数据包,如何实现发送可靠UDP数据包的某种方式? 我只是在问一个逻辑,因为我不知道它是如何工作的。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

这是我用作以前公司的一些旧代码

这背后还有很多其他方法,太多不能在这里真正分享,但你想使用Acknowldgemet和Not Acknowledged消息来表明已经发送和接收了通信。

public void InitialiseVenemaComms()
{
    string initMessage = null;
    DebugInfo(1, "*** InitialiseVenemaComms");
    initMessage = "002" + StationPrms.StationId + "ACK";

try
{
    System.Net.Sockets.UdpClient udpClient = new System.Net.Sockets.UdpClient(Convert.ToInt32(StationPrms.Venema.LocalPort));
    byte[] messageBytes = System.Text.Encoding.ASCII.GetBytes(initMessage);
    udpClient.Connect(StationPrms.Venema.DNS, Convert.ToInt32(StationPrms.Venema.RemotePort));
    DebugInfo(1, string.Format("*** Sending init message '{0}' from port '{1}' to ip '{2}' on port '{3}'", initMessage, StationPrms.Venema.LocalPort, StationPrms.Venema.DNS, StationPrms.Venema.RemotePort));

    udpClient.Send(messageBytes, messageBytes.Length);
    udpClient.Close();
    DebugInfo(1, "*** Init Message Sent");
}
catch (Exception ex)
{
    DebugInfo(2, "Error: " + ex.Message);
    CssError("Error initalising Venema comms: " + ex.Message);
}

}

但你最好根据我的评论发送TCPIP。