public SocketAsyncResult(SocketBaseRequest request, SocketClient socketClient, AsyncCallback userCallback, object asyncState) { this._request = request; this._socketClient = socketClient; this._userCallback = userCallback; this._asyncState = asyncState; // 异步执行操作 ThreadPool.QueueUserWorkItem((obj) => { AsyncRequest(obj); }, this); }
public string Send(SocketBaseRequest request, SocketClient socketClient, ref string resultStr) { string _request = string.Empty; if (socketClient.SendRequest(request)) { resultStr = _request = socketClient.Listen(); } return(_request); }
/// <summary> /// /// </summary> /// <param name="request"></param> /// <param name="type"></param> /// <returns></returns> public void SendRequestAsync(SocketBaseRequest request, SocketMessageInfoType type = SocketMessageInfoType.REQUEST) { if (this.connected) { string _str = SerializeHelper.JsonSerializer(request); string message = string.Format("[length={0}][MSG={1}]{2}", _str.Length, type.ToString(), _str); byte[] sendBuffer = Encoding.Unicode.GetBytes(message); SendData(sendBuffer); } else { throw new SocketException((int)SocketError.NotConnected); } }
/// <summary> /// /// </summary> /// <param name="request"></param> /// <param name="type"></param> /// <returns></returns> public SocketBaseResponse <T> RequestAsync <T>(SocketBaseRequest request, AsyncCallback callback) { if (this.connected) { _readWirted.ReceiveSAEA.Completed -= OnReceive; SocketSendLib <T> _sender = new SocketSendLib <T>(); IAsyncResult _sendRequest = _sender.BeginSend(request, this, callback, _sender); string resultStr = string.Empty; SocketBaseResponse <T> _result = _sender.EndSend(ref resultStr, _sendRequest); _readWirted.ReceiveSAEA.Completed += OnReceive; return(_result); } else { throw new SocketException((int)SocketError.NotConnected); } }
public IAsyncResult BeginSend(SocketBaseRequest request, SocketClient socketClient, AsyncCallback userCallback, object asyncState) { SocketAsyncResult <T> result = new SocketAsyncResult <T>(request, socketClient, userCallback, asyncState); return(result); }