private void InitSocket(Socket socket) { InitConnectionBase(socket); //_log.Info("TcpConnection::InitSocket[{0}, L{1}]", RemoteEndPoint, LocalEndPoint); using (_sendingLock.Acquire()) { _socket = socket; try { socket.NoDelay = true; } catch (ObjectDisposedException) { CloseInternal(SocketError.Shutdown, "Socket disposed."); _socket = null; return; } var receiveSocketArgs = SocketArgsPool.Get(); _receiveSocketArgs = receiveSocketArgs; _receiveSocketArgs.AcceptSocket = socket; _receiveSocketArgs.Completed += OnReceiveAsyncCompleted; var sendSocketArgs = SocketArgsPool.Get(); _sendSocketArgs = sendSocketArgs; _sendSocketArgs.AcceptSocket = socket; _sendSocketArgs.Completed += OnSendAsyncCompleted; } StartReceive(); TrySend(); }
private void InitSocket(Socket socket) { //Console.WriteLine("TcpConnection::InitSocket({0})", socket.RemoteEndPoint); base.InitSocket(socket, EffectiveEndPoint); lock (_sendingLock) { _socket = socket; try { socket.NoDelay = true; //socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer, TcpConfiguration.SocketBufferSize); //socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendBuffer, TcpConfiguration.SocketBufferSize); } catch (ObjectDisposedException) { CloseInternal(SocketError.Shutdown); _socket = null; return; } _receiveSocketArgs = SocketArgsPool.Get(); _receiveSocketArgs.AcceptSocket = socket; _receiveSocketArgs.Completed += OnReceiveAsyncCompleted; _sendSocketArgs = SocketArgsPool.Get(); _sendSocketArgs.AcceptSocket = socket; _sendSocketArgs.Completed += OnSendAsyncCompleted; } StartReceive(); }