c# - 如何使用 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 库更好的解决方案?
解决方案
推荐阅读
- python - 如何让蛇继续朝那个方向前进,直到按下另一个箭头键
- powershell - Power BI 管理的 Powershell 脚本在标准 PS 终端中不起作用
- linux - 需要有关使用嵌套命令替代的建议
- r - 在 R 中为多个绘图包含更多空间
- python - 如何应用切片窗口将熊猫转换为二维数组?
- javascript - 如何使用 Jest 测试反应组件,该组件映射到对象数组以匹配设置要呈现的值的对象值
- javascript - 在 NextJS 中让 styled-jsx 与 tailwindcss 一起工作
- h2o - 包含深度学习时,H2O Stacked Ensemble MOJO 不返回值
- swift - 使用 Swift Combine 多次重复网络请求
- python - 通过 SFTP 修改大型 Sqlite 数据库