Только одно использование каждого адреса сокета (протокол / сетевой адрес / порт) обычно разрешено при программировании сокета - PullRequest
0 голосов
/ 24 мая 2018

Вот мой приведенный ниже код, который выдает и исключение «Только одно использование каждого адреса сокета» «listernerSocket.Bind (localEndPoint)» * , поскольку LocalEndPoint равен нулю.

Впервые он работает, как ожидалось, и в следующий раз LocalEndPoint становится нулевым и пытается связать тот же Ip и номер порта.

Спасибо и с уважением, Kartik

while (true)
                {
                    if (listernerSocket.LocalEndPoint == null)
                    {
                        listernerSocket.Dispose();
                        listernerSocket.Close();
                        IPEndPoint localEndPoint = new IPEndPoint(assigningIp, Constants.MystroServicePortNo);
                        listernerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                        listernerSocket.Bind(localEndPoint);
                        listernerSocket.Listen(100);
                    }
                    var acceptedSocket = listernerSocket.Accept();
                    var state = new StateObject { BufferSize = 6000, Socket = acceptedSocket };
                    acceptedSocket.BeginReceive(state.Buffer, 0, state.BufferSize, 0, this.ReadCallback, state);
                    acceptedSockets.Add(acceptedSocket);
                }

1 Ответ

0 голосов
/ 24 мая 2018

Спасибо за ваш быстрый ответ.

На самом деле ваша идентификация была записана, что было из-за другого метода, который неоднократно вызывал, и там LocalEndPoint был нулевым.

Теперь его разрешено.

Спасибо и всего наилучшего, Kartik K

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