Как отключить сокет в C #, логическая переменная ReuseSocket. Какова цель - PullRequest
1 голос
/ 28 июня 2010

Какова цель использования ReuseSocket для истины. Я не знаю, что делать, если я установил для этого свойства значение true. Что произойдет, если я установлю ReuseSocket в true или flase. Я пытаюсь создать сокет, но он снова выдает ошибку и снова.

Error

A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied: Stack:    at System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
   at System.Net.Sockets.Socket.Send(Byte[] buffer)
   at Serverdll.ServerApp.StopReceiveServer() : Function Name : Int32 Send(Byte[], Int32, Int32, System.Net.Sockets.SocketFlags)


Description :Address Already In Use., Error Code: 10048, Message On Start: Only one usage of each socket address (protocol/network address/port) is normally permitted

Ответы [ 2 ]

1 голос
/ 28 июня 2010

Обычно только один сокет для определенного протокола может быть привязан к данному адресу одновременно.Таким образом, вы можете иметь только один сокет UDP, связанный с конкретным IP-адресом и портом.

Если вам нужно, чтобы несколько сокетов были привязаны к одной и той же комбинации протокола / IP-адреса / порта, вам следует установить для параметра сокета ReuseAddress значение true для сокета, который вы создаете перед вызовом Bind() (или любого другогометод, который неявно связывает Socket).

В противном случае вы должны убедиться, что один сокет закрыт, используя один из методов Close(), прежде чем создавать другой.

0 голосов
/ 28 июня 2010

Когда соединение закрыто, все еще существует длительный период ожидания, определенный спецификациями TCP .Эта опция позволяет минимизировать время ожидания при закрытии соединения

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