首页 > 解决方案 > 如何使用 C# 中的 NetworkComms.Net 库通过 Internet 建立 UDP 连接

问题描述

我正在尝试通过 Internet 建立从客户端到服务器的两个连接(TCP 和 UDP)。TCP 连接工作正常,但 UDP 连接立即关闭,因此无法正确建立。

如果我在同一台机器上进行本地测试,一切正常。包括数据传输在内的两个连接都按预期工作。

我已经在服务器上打开了端口(TCP 和 UDP)。

服务器:

Connection.StartListening(ConnectionType.TCP, new System.Net.IPEndPoint(ip, port));
Connection.StartListening(ConnectionType.UDP, new System.Net.IPEndPoint(ip, port));

客户:

ConnectionInfo connInfoTCP = new ConnectionInfo(ip, port);
ConnectionInfo connInfoUDP = new ConnectionInfo(ip, port);

try
{                
userConnection = TCPConnection.GetConnection(connInfoTCP);
userConnectionUDP = UDPConnection.GetConnection(connInfoUDP, 
UDPOptions.Handshake);
}
...

TCP 连接建立得很好,但 UDP 连接立即关闭。

我想知道的是:如果我在本地尝试它,我会为两个连接获得相同的网络通信网络标识符,而我在服务器上尝试它时,UDP 网络通信网络标识符总是显示 AAAAAAAAAAAAAAAAAAAAAA。但是端口和远程IP都可以。

这是我在服务器上的日志输出:

29.05.2019 14:54:16: Client connected :c7WvezQPAEqh8bIHwljipA Protocol: TCP Remote ip: xxx.xxx.xxx.xxx:55653
29.05.2019 14:54:17: Client connected :AAAAAAAAAAAAAAAAAAAAAA Protocol: UDP Remote ip: xxx.xxx.xxx.xxx:53951
29.05.2019 14:54:17: Client disconnected:AAAAAAAAAAAAAAAAAAAAAA

这是上面日志输出的值:

Client connected: ConnectionInfo.NetworkIdentifier
Protocol: connection.ConnectionInfo.ConnectionType
Remote ip: connection.ConnectionInfo.RemoteEndPoint

一个普遍的问题:这是实现这种连接的最佳方式还是有更好的方式?或者也许是比 NetworkComms.Net 库更好的解决方案?

标签: c#socketsudpnetworkcomms.net

解决方案


推荐阅读