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