У меня есть два приложения .net, взаимодействующих с сокетами через порт 5672, и все работает нормально.На стороне сервера я открываю соединение с помощью следующих простых строк кода:
IPAddress localAddr = Dns.GetHostEntry("localhost").AddressList[0];
TcpListener socket = new TcpListener(localAddr, 5672);
socket.Start();
Если я пытаюсь запустить другое серверное приложение, происходит сбой, сообщая, что порт уже используется.
У меня естьтакже та же пара приложений, написанных на C ++ (не мной).
К моему удивлению, я могу одновременно запустить и сервер C ++, и .net.
Хуже всего то, что мой клиент C ++ можетНе связывается с моим сервером .net (ошибка «соединение отклонено»).
Чтобы понять мою проблему, я перечислил используемые порты с помощью команды:
netstat -a
И в результате у меня было:
TCP 0.0.0.0:5672 <--- (это сервер c ++) <br>TCP [:: 1]: 5672 <--- (это сервер .net) </p>
В соответствии с моим кодом на C # адрес локального хоста не должен быть 0.0.0.0или 127.0.0.1?
Что происходит на моем сервере .net?
Что означает [:: 1]?
Примечание:
Если я изменю свой код на:
IPAddress localAddr = new IPAddress(new byte[]{0,0,0,0});
, все работает нормально, и мой клиент C ++ связывается с сервером .net.