Привет всем, помогите разобраться с ошибкой плз. Я столкнулся с такой проблемой:
при вызове:
Код | rs = _stream.EndRead(result);
|
Возникает ошибка : System.IO.IOException: Не удается прочитать данные из транспортного соединения Самое интересное, что у другова человека именно этот код работает без этой ошибки, все нормально.
У меня WinXP у него Win7. У обоих NetFramework 4.5.
Подскажите в чем может быть проблема. Ниже приведу код... и саму ошибку..
1)
Код | public void read() { try { if (_stream != null) { if (_stream.CanRead) { _buffer = new byte[2]; _stream.BeginRead(_buffer, 0, 2, new AsyncCallback(OnReceiveCallbackStatic), null); } } } catch (Exception ex) { CLogger.getInstance().info("[Login]: read() Exception: \n" + ex); close(); } }
|
2)
Код | private void OnReceiveCallbackStatic(IAsyncResult result) { int rs = 0; try { if(_stream == null) CLogger.getInstance().warning("BAD STREAM"); else CLogger.getInstance().warning("GOOD STREAM");
if (result == null) CLogger.getInstance().warning("BAD result"); else CLogger.getInstance().warning("GOOD result");
rs = _stream.EndRead(result); // ТУТ
CLogger.getInstance().warning("YOHOOOO!!!");
if (rs > 0) { CLogger.getInstance().warning("rs > 0: " + rs); byte Length = _buffer[0]; if (_stream.DataAvailable) { _buffer = new byte[Length + 2]; _stream.BeginRead(_buffer, 0, Length + 2, new AsyncCallback(OnReceiveCallback), result.AsyncState); } else { CLogger.getInstance().warning("NO AVIABLE"); } } else { CLogger.getInstance().warning("rs <= 0: " + rs); } } catch (Exception s) { CLogger.getInstance().warning("[Login]: " + _address + " was closed by force: " + s); close(); } }
|
3)
Код | private void OnReceiveCallback(IAsyncResult result) { _stream.EndRead(result);
byte[] buff = new byte[_buffer.Length]; _buffer.CopyTo(buff, 0); if (buff.Length >= 2) { buff = decryptC(buff, buff.Length); handlePacket(buff); } new Thread(read).Start(); }
|
4) Сама ошибка.
Код | [Login]: Client connected.127.0.0.1:4450 Send: PROTOCOL_BASE_GET_SCHANNELLIST_ACK GOOD STREAM GOOD result Отправляем :65; OPCODE: 2049 [Login]: 127.0.0.1:4450 was closed by force: System.IO.IOException: Не удается прочитать данные из транспортного соединения: Операция ввода/вывода была прервана из-за завершения потока команд или по запросу приложения. ---> System.Net.Sockets.SocketException: Операция ввода/вывода была прервана из-за завершения потокакоманд или по запросу приложения в System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult) в System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult) --- Конец трассировки внутреннего стека исключений --- в System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult) в PBLoginServer.LoginClient.OnReceiveCallbackStatic(IAsyncResult result) в D:\_server\pb\_newPBDevelop\SHARP_Server\LoginServer\network\Login\LoginClient.cs:строка 171
|
=============
Зарание спасибо  |