如何使用C#中的NetworkComms.Net库通过Internet建立UDP连接

时间:2019-05-29 13:22:39

标签: c# sockets udp networkcomms.net

我正在尝试通过互联网建立从客户端到服务器的两个连接(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连接立即关闭。

我想知道的是:如果我在本地尝试,则两个连接都将获得相同的networkcomms网络标识符,而在服务器上尝试运行UDP networkcomms网络标识符时,它始终显示AAAAAAAAAAAAAAAAAAAAAAAAA。但是端口和远程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库更好的解决方案?

0 个答案:

没有答案