private void ConnectCallBack(IAsyncResult iar) { allDone.Set(); try { clientSocket = (TcpClient)iar.AsyncState; clientSocket.EndConnect(iar); if (OnSendStatusMSG != null) { OnSendStatusMSG(string.Format("与服务器[{0}]连接成功...", clientSocket.Client.LocalEndPoint)); } networkStream = clientSocket.GetStream(); DataRead dataRead = new DataRead(networkStream, clientSocket.ReceiveBufferSize); networkStream.BeginRead(dataRead.msg, 0, dataRead.msg.Length, ReadCallBack, dataRead); isListen = true; if (OnDoConnect != null) { OnDoConnect(clientSocket.Client.LocalEndPoint.ToString()); } } catch (Exception e) { if (OnSendStatusMSG != null) { OnSendStatusMSG(e.Message); } if (OnDoDisconnect != null) { OnDoDisconnect("连接异常..."); } SocketDisconnect(); return; } }
private void ReadCallBack(IAsyncResult iar) { try { DataRead dataRead = (DataRead)iar.AsyncState; int recv = dataRead.networkStream.EndRead(iar); byte[] data = new byte[recv]; Array.Copy(dataRead.msg, 0, data, 0, data.Length); if (isListen == true) { if (OnSendRecMSG != null) { OnSendRecMSG(data); } dataRead = new DataRead(networkStream, clientSocket.ReceiveBufferSize); networkStream.BeginRead(dataRead.msg, 0, dataRead.msg.Length, ReadCallBack, dataRead); } } catch (SocketException e) { if (OnSendStatusMSG != null) { OnSendStatusMSG(e.Message); } } catch (IOException ioe) { if (OnSendStatusMSG != null) { OnSendStatusMSG(ioe.Message); } SocketDisconnect(); } }