@AlexGenesis

Как создать сокет между машинами вне одной локальной сети?

Добрый день, решил поэкспериментировать с сокетами на примере следующих скриптов:

Сервер:
IPHostEntry host = Dns.GetHostEntry("ip");
            IPAddress ipAddress = host.AddressList[0];

            string data;
            byte[] bytes = new byte[1024];
            int bytesRec;

            Socket server = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
            IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000);
            server.Bind(localEndPoint);
            server.Listen(6);

            Socket handler = server.Accept();
            bytesRec = handler.Receive(bytes);
            data = Encoding.ASCII.GetString(bytes, 0, bytesRec);
            Console.WriteLine(data);

            bytes = Encoding.ASCII.GetBytes("srv to cln");
            handler.Send(bytes);
            Console.ReadLine();

Клиент:
string data;
            byte[] bytes = new byte[1024];
            int bytesRec;

            IPHostEntry host = Dns.GetHostEntry("ip");
            IPAddress ipAddress = host.AddressList[0];
            IPEndPoint remoteEP = new IPEndPoint(ipAddress, 11000);
            Socket client = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

            client.Connect(remoteEP);

            bytes = Encoding.ASCII.GetBytes("sln to srv");
            client.Send(bytes);

            bytesRec = client.Receive(bytes);
            data = Encoding.ASCII.GetString(bytes, 0, bytesRec);
            Console.WriteLine(data);
            Console.ReadLine();


Сначала протестировал внутри локальной сети, все сработало, потом решил изменить подключаемый ip у клиента на внешний ip машины-сервера, перебросил порт и отключил защитник, но все равно выдает ошибку:
"System.Net.Internals.SocketExceptionFactory.ExtendedSocketException: Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение. "
В чем проблема?
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
@AlexGenesis Автор вопроса
Решил проблему, заменив
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000);

на
IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse("ip"), 11000);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы