@Herr_Shmulke

Почему не подключается клиент к серверу?

Здравствуйте. Написал самый элементарный сервер/клиент. Проблема заключается в том, что если указать IP провайдера, то клиент начинает истерить, что конечный компьютер отверг запрос. Порт открыт, проверял через 2IP, брандмауэр отключен. В роутере тоже все прописано.
Сам код:
Сервер:
static Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

static void Main(string[] args)
        {
            Console.Title = "Server";
            socket.Bind(new IPEndPoint(IPAddress.Any, 25565));
            socket.Listen(5);
            byte[] buffer = new byte[1024];
            Socket client = socket.Accept();
            while (true)
            {
                buffer = null;
                buffer = new byte[1024];
                client.Receive(buffer);
                buffer = ByteParser(buffer);
                Console.WriteLine(Encoding.ASCII.GetString(buffer));
            }
        }

        static byte[] ByteParser(byte[] input)
        {
            for (int i = input.Length - 1; i > 0; i--)
            {
                if (input[i] == 0)
                    Array.Resize(ref input, input.Length - 1);
            }
            return input;
        }

Клиент:
static Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

        static void Main(string[] args)
        {
            string Message;
            byte[] buffer;
            socket.Connect("xxx.xxx.xxx.xxx", 25565);
            while (true)
            {
                Message = Console.ReadLine();
                buffer = Encoding.ASCII.GetBytes(Message);
                socket.Send(buffer);
            }
        }
  • Вопрос задан
  • 148 просмотров
Решения вопроса 1
VoidVolker
@VoidVolker Куратор тега C#
Dark side eye. А у нас печеньки! А у вас?
VoidVolker, IP белый. Клиент и сервер располагаются на одной машине. А вот если через локалку подключать, т.е. через 127.0.0.1, то все вполне хорошо работает

Так не будет работать: вы изнутри локальной сети пытаетесь получить доступ на порт роутера, который смотрит в интернет - конечно он не будет форвардить изнутри внутрь. Роутер ожидает подключения снаружи и будет форвардить соединение только из интернета. Либо запускайте клиента где-то в интернете либо используйте прокси.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы