У меня есть ошибка 10022 в приложении, использующем сокеты в C# .NET3.5.Ошибка C# socket 10022
В моем коде я привязываю сокет к локальному IP-адресу. Когда мне это больше не нужно, я просто отключу его (reader.socket.Disconnect (true);) с «true», чтобы иметь возможность повторно использовать его.
Но когда я называю «привязкой», метод снова, он выходит из строя с ошибкой 10022 (неверный аргумент).
Если я установил строку с этим методом в качестве комментария, он затем сработает на линии «прослушать», сказав, что соединение уже установлено (хотя я называемые разъединение!)
Любая идея?
Благодаря
Вот часть кода, который не в состоянии:
public void WaitConnexion(IPEndPoint localEP)
{
if (localEP.Port != 9000)
{
MessageBox.Show("Le port doit être 9000");
return;
}
LocalEndPoint = localEP;
if (reader.socket.Connected)
{
MessageBox.Show("Vous êtes déjà connecté", "Conflit de connexion", MessageBoxButton.OK, MessageBoxImage.Exclamation);
return;
}
// on bind le socket avec le endpoint local, et on le met en attente de connexion asynchrone
// reader.socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
reader.socket.Bind(localEP);
reader.socket.Listen(1);
reader.socket.BeginAccept(new AsyncCallback(WaitConnexionCallBack), reader.socket);
}
и здесь метод diconnect с обратным вызовом:
public void Disconnect()
{
if (!reader.socket.Connected)
return;
reader.socket.BeginDisconnect(true, new AsyncCallback(DisconnectCallBack), reader.socket);
}
private void DisconnectCallBack(IAsyncResult result)
{
reader.socket = (result.AsyncState as Socket);
reader.socket.EndDisconnect(result);
if (Disconnected != null)
Disconnected(this, EventArgs.Empty);
}