Próbuję ponownie połączyć się z gniazdem, z którego się odłączyłem, ale z jakiegoś powodu nie pozwoli na to, mimo że nazwałem metodę Disconnect z argumentem "reuseSocket" ustawionym na true.Jak ponownie wykorzystać gniazdo w .NET?
_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_socket.Connect(ipAddress, port);
//...receive data
_socket.Disconnect(true); //reuseSocket = true
//...wait
_socket.Connect(ipAddress, port); //throws an InvalidOperationException:
Gdy gniazdo zostało odłączone, można podłączyć tylko raz asynchronicznie, a jedynie do innego punktu końcowego. BeginConnect musi być wywołany na wątku, który nie zakończy się aż do zakończenia operacji .
Co robię źle?
Prawdopodobnie nie należy ponownie używać gniazda i po prostu utworzyć nowe. Nigdy nie dzwoń do 'Disconnect', zamiast tego użyj' use'. Zadzwoń również do 'Shutdown'. – usr