- Ich benutze Socket (Socket A = neue Socket ...) zu senden/zu empfangen.
- , wenn etwas passiert, Bett (Trennung), ich versuche/entsorgen altes Objekt zu schließen, und dann eine neue Buchse (A = new Socket ...) (gleich Host/Port)
- Die connect Instancing() Phase überprüft gut, der Remote-Host sieht die Verbindung.
- Beim Versuch, das erste Byte zu senden, erhalte ich sofort:
System.ObjectDisposedException: keine angeordneten Objekt zugreifen können. Objektname: 'System.Net.Sockets.Socket'. bei System.Net.Sockets.Socket.Send (Byte [] Puffer, Int32-Offset, Int32-Größe, SocketFlags SocketFlags, SocketError & errorCode) bei System.Net.Sockets.Socket.Send (Byte [] Puffer, Int32-Offset, Int32 Größe, Socketsocket) bei System.Net.Sockets.Socket.Send (Byte [] Puffer)ObjectDisposeException beim Versuch, durch einen wiedereröffneten Socket zu senden
Irgendwelche Ideen?
try
{
CCMSocket.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.NoDelay, true);
CCMSocket.Connect(CCMServer, CCMPort);
}
Nun, wenn es mit der Steckdose arbeiten, die catch-Klausel fängt SocketException
und ruft die Reconnect-Methode:
try
{
//Verify the the socket is actually disconnected
byte[] Empty = new byte[0];
CCMSocket.Send(Empty);
}
catch (Exception ex)
{
bool connected = false;
int reconnectCounter = 0;
do
{
reconnectCounter++;
Disconnect(); //<-- Just CCMSocket.Disconnect(true) in a try/catch
if (Connect(CCMServer, CCMPort)) // <-- method given above
{
connected = true;
CCMSocket.Send(LoginData); // this fails
}
} while (!connected);
}
Können wir uns Ihren Code ansehen, um zu sehen, wie Sie Ihre Objekte entsorgen. –
können Sie einige Code-Extrakte posten, klingt, als ob Sie die gleiche Referenz verwenden – djeeg
Verwenden Sie 'using' Block gegen' Socket' Objekt irgendwo? – abatishchev