private void ReciveCallback(IAsyncResult ar) { AsyncClientToken token = (AsyncClientToken)ar.AsyncState; try { EndPoint ipe = new IPEndPoint(IPAddress.Parse(token.IP), token.Port); int recivecount = token.Socket.EndReceiveFrom(ar, ref ipe); if (recivecount > 0) { string sendData = token.HandlerReturnData(Encoding.UTF8.GetString(token.Buffer, 0, recivecount), false); if (!string.IsNullOrEmpty(sendData)) { token.Datasize = Encoding.UTF8.GetBytes(sendData, 0, sendData.Length, token.Buffer, 0); token.Socket.BeginSendTo(token.Buffer, 0, token.Datasize, SocketFlags.None, ipe, new AsyncCallback(SendCallback), token); } else { CloseOneInstance(token); } return; } token.HandlerReturnData(token.MessageID, true); CloseOneInstance(token); } catch (Exception ex) { token.HandlerReturnData(token.MessageID, true); CloseOneInstance(token); if (LogTool != null) { LogTool.Log(ex.Message + ex.StackTrace); } } }
private void SendCallback(IAsyncResult ar) { AsyncClientToken token = (AsyncClientToken)ar.AsyncState; try { token.Socket.EndSendTo(ar); if (token.HandlerReturnData != null) { EndPoint ipe = new IPEndPoint(IPAddress.Parse(token.IP), token.Port); token.Socket.BeginReceiveFrom(token.Buffer, 0, m_maxSize, SocketFlags.None, ref ipe, new AsyncCallback(ReciveCallback), token); } else { CloseOneInstance(token); } } catch (Exception ex) { token.HandlerReturnData(token.MessageID, true); CloseOneInstance(token); if (LogTool != null) { LogTool.Log(ex.Message + ex.StackTrace); } } }
private void ConnectCallback(IAsyncResult ar) { AsyncClientToken token = (AsyncClientToken)ar.AsyncState; try { token.Socket.EndConnect(ar); token.Socket.BeginSend(token.Buffer, 0, token.Datasize, SocketFlags.None, new AsyncCallback(SendCallback), token); } catch (Exception ex) { token.HandlerReturnData(token.MessageID, true); CloseOneInstance(token); if (LogTool != null) { LogTool.Log(ex.Message + ex.StackTrace); } } }