Я создал программу сокета для служб Windows, чтобы лизнуть на конкретном порту и принять запрос клиента. Он работает нормально.Ошибка сокета TCP 10061
protected override void OnStart(string[] args)
{
//Lisetns only on port 8030
IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, 8030);
//Defines the kind of socket we want :TCP
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//Bind the socket to the local end point(associate the socket to localendpoint)
serverSocket.Bind(ipEndPoint);
//listen for incoming connection attempt
// Start listening, only allow 10 connection to queue at the same time
serverSocket.Listen(10);
Socket handler = serverSocket.Accept();
}
Но мне нужна служебная программа для прослушивания на нескольких портах и принятия запроса клиента на любой доступный порт.
Поэтому я увеличил приложение для привязки к порту 0 (ноль), чтобы он мог принять запрос на любой доступный порт.
Но потом я получил ошибку 10061
No connection could be made because the target machine actively refused it.
Я не могу знать, Что причина получаю эту ошибку.
Кто-нибудь может предложить способ улучшить код, чтобы принять запрос на любом порту.
Но клиенту необходимо отправить запрос на подключение к определенному порту. например, клиент1 должен подключиться к port 8030
, client2 должен подключиться к port 8031
.
Зачем вам нужны клиенты для отправки запросов в разные порты ?! Это не разумное требование. –
Чтобы идентифицировать клиента – Madhusmita
Просто отправьте его идентификатор клиенту. Вместо того, чтобы подключиться к порту 8030, попросите его отправить «8030» через сокет. Вы делаете это излишне сложно. –