public void Handle(AbsRequestHandler handler) { try { byte[] buffer = null; IEnumerable<byte> receiveBuffer = new byte[0]; do { buffer = new byte[RECEIVE_LENGTH];//length:chrome:514, firefox:533, IE11:289 int receiveLength = handler.ClientSocket.Receive(buffer); if(buffer.Length > receiveLength) { Array.Resize(ref buffer, receiveLength); } receiveBuffer = receiveBuffer.Concat(buffer); } while (handler.ClientSocket.Available > 0); byte[] data = receiveBuffer.ToArray(); byte[] response = null; if (!ResponseHandShake(data, out response)) { handler.ServiceState = new State_Exit(); return; } int sendLength = handler.ClientSocket.Send(response); Logger.WriteLog("Response HandShake data and length:" + sendLength.ToString()); handler.ServiceState = new State_AsyncCommunicate(); } catch(SocketException sckEx) { Logger.WriteLog("[State_HandShake]Socket Error:" + sckEx.Message); handler.ServiceState = new State_Exit(); } }
private static int SEND_TIMEOUT = 2000; // 2 second public void Handle(AbsRequestHandler handler) { try { byte[] buffer = null; IEnumerable <byte> receiveBuffer = new byte[0]; do { buffer = new byte[RECEIVE_LENGTH];//length:chrome:514, firefox:533, IE11:289 int receiveLength = handler.ClientSocket.Receive(buffer); if (buffer.Length > receiveLength) { Array.Resize(ref buffer, receiveLength); } receiveBuffer = receiveBuffer.Concat(buffer); }while (handler.ClientSocket.Available > 0); byte[] data = receiveBuffer.ToArray(); byte[] response = null; if (!ResponseHandShake(data, out response)) { handler.ServiceState = new State_Exit(); return; } int sendLength = handler.ClientSocket.Send(response); Logger.WriteLog("Response HandShake data and length:" + sendLength.ToString()); handler.ServiceState = new State_AsyncCommunicate(); } catch (SocketException sckEx) { Logger.WriteLog("[State_HandShake]Socket Error:" + sckEx.Message); handler.ServiceState = new State_Exit(); } }
public void Handle(AbsRequestHandler handler) { try { this._clientHandler = handler; _keepAlive = true; receiveData = new byte[0]; //this.AsyncReceive(handler); handler.ReceiveData = new byte[20]; do { lock (_clientHandler) { _sequenceNO += 1; } StateObj obj = new StateObj { SequnceNO = _sequenceNO, ClientSocket = handler.ClientSocket }; handler.ClientSocket.BeginReceive(obj.Receive_buffer, 0, obj.Receive_buffer.Length, SocketFlags.None, ReceiveCallback, obj); _receiveDone.WaitOne(); } while (_keepAlive); } catch (SocketException sckEx) { Logger.WriteLog("[SocketException]" + sckEx.Message); } catch (Exception ex) { Logger.WriteLog("[Exception]" + ex.Message); } finally { handler.ServiceState = new State_Exit(); } }
public void Handle(AbsRequestHandler handler) { try { this._clientHandler = handler; _keepAlive = true; receiveData = new byte[0]; //this.AsyncReceive(handler); handler.ReceiveData = new byte[20]; do { lock (_clientHandler) { _sequenceNO += 1; } StateObj obj = new StateObj { SequnceNO = _sequenceNO, ClientSocket = handler.ClientSocket }; handler.ClientSocket.BeginReceive(obj.Receive_buffer, 0, obj.Receive_buffer.Length, SocketFlags.None, ReceiveCallback, obj); _receiveDone.WaitOne(); }while (_keepAlive); } catch (SocketException sckEx) { Logger.WriteLog("[SocketException]" + sckEx.Message); } catch (Exception ex) { Logger.WriteLog("[Exception]" + ex.Message); } finally { handler.ServiceState = new State_Exit(); } }
public void Handle(AbsRequestHandler handler) { Logger.WriteLog("Client " + handler.ClientNo + " Exit ..."); //exit state handler.CancelAsync(); }