/// <summary> /// Callback when datas are sended. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void SocketSendEventArgs_Completed(object sender, System.Net.Sockets.SocketAsyncEventArgs e) { if (e.LastOperation == System.Net.Sockets.SocketAsyncOperation.Connect) { receiveDone.Set(); // Prepare for receiving datas. byte[] buffer = new byte[BufferSize]; e.SetBuffer(buffer, 0, buffer.Length); receiveDone.Reset(); p_twoSensesSocket.ReceiveAsync(p_socketReceiveEventArgs); } if (e.LastOperation == System.Net.Sockets.SocketAsyncOperation.Send) { if (OutgoingDatas != null) { // Return the System.Net.Sockets.SocketError object. OutgoingDatas(e.SocketError, EventArgs.Empty); } } else if (e.LastOperation == System.Net.Sockets.SocketAsyncOperation.Receive) { } }
private void SendCompleted(object sender, System.Net.Sockets.SocketAsyncEventArgs e) { if (e.SocketError == SocketError.Success && e.BytesTransferred > 0) { if (e.BytesTransferred < e.Count) { e.SetBuffer(e.Offset + e.BytesTransferred, e.Count - e.BytesTransferred); if (!mSocket.SendAsync(e)) { SendCompleted(this, e); } } } else { ReleaseSocket(); } }
/// <summary> /// Callback when datas are received. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void SocketReceiveEventArgs_Completed(object sender, System.Net.Sockets.SocketAsyncEventArgs e) { string datas = null; switch (e.LastOperation) { case System.Net.Sockets.SocketAsyncOperation.Connect: if (e.SocketError == System.Net.Sockets.SocketError.Success) { receiveDone.Set(); // Prepare for receiving datas. byte[] buffer = new byte[BufferSize]; e.SetBuffer(buffer, 0, buffer.Length); receiveDone.Reset(); p_twoSensesSocket.ReceiveAsync(p_socketReceiveEventArgs); if (Connected != null) { // Return the System.Net.Sockets.SocketError object. Connected(e.SocketError, EventArgs.Empty); } } else { if (SocketError != null) { // Return the System.Net.Sockets.SocketError object. SocketError(e.SocketError, EventArgs.Empty); } } break; case System.Net.Sockets.SocketAsyncOperation.Receive: if (e.SocketError == System.Net.Sockets.SocketError.Success) { receiveDone.Set(); datas = System.Text.Encoding.UTF8.GetString(e.Buffer, 0, e.BytesTransferred); receiveDone.Reset(); p_twoSensesSocket.ReceiveAsync(p_socketReceiveEventArgs); if (IncomingDatas != null) { IncomingDatas(datas, EventArgs.Empty); } } else { if (SocketError != null) { // Return the System.Net.Sockets.SocketError object. SocketError(e.SocketError, EventArgs.Empty); } } break; case System.Net.Sockets.SocketAsyncOperation.Send: if (e.SocketError == System.Net.Sockets.SocketError.Success) { receiveDone.Set(); datas = System.Text.Encoding.UTF8.GetString(e.Buffer, 0, e.BytesTransferred); p_socketReceiveEventArgs.SetBuffer(e.Buffer, 0, e.Buffer.Length); p_twoSensesSocket.SendAsync(p_socketReceiveEventArgs); receiveDone.Reset(); if (OutgoingDatas != null) { OutgoingDatas(datas, EventArgs.Empty); } } else { if (SocketError != null) { // Return the System.Net.Sockets.SocketError object. SocketError(e.SocketError, EventArgs.Empty); } } if (OutgoingDatas != null) { // Return the System.Net.Sockets.SocketError object. OutgoingDatas(e.SocketError, EventArgs.Empty); } break; } }