- Я использую Socket (Socket A = new Socket ...) для отправки / получения.
- когда что-то происходит (отключение), я пытаюсь закрыть / удалить старый объект, а затем создать новый сокет (A = новый сокет ...) (тот же хост / порт)
- Фаза connect () проходит нормально, удаленный хост видит соединение.
- При попытке отправить самый первый байт сразу получаю:
System.ObjectDisposedException: невозможно получить доступ к удаленному объекту. Имя объекта: 'System.Net.Sockets.Socket'. в System.Net.Sockets.Socket.Send (буфер Byte [], смещение Int32, размер Int32, SocketFlags socketFlags, SocketError и errorCode) в System.Net.Sockets.Socket.Send (буфер Byte [], смещение Int32, размер Int32, SocketFlags socketFlags) в System.Net.Sockets.Socket.Send (буфер Byte [])
Любые идеи?
try
{
CCMSocket.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.NoDelay, true);
CCMSocket.Connect(CCMServer, CCMPort);
}
Теперь при работе с сокетом предложение catch перехватывает SocketException
и вызывает метод повторного подключения:
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);
}
using
блок противSocket
объекта? - person abatishchev   schedule 16.01.2011