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