Как установить UDP-соединение через Интернет с помощью библиотеки NetworkComms.Net в C # - PullRequest
2 голосов
/ 29 мая 2019

Я пытаюсь установить два соединения (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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...