private void server_DataReceived(object sender, DataReceivedEventArgs e) { string receivedMessage = BytesToString(e.Data); txtReceivedMessage.Dispatcher.BeginInvoke( delegate(object arg) { txtReceivedMessage.TextContent = "Received message: " + arg.ToString(); return null; }, receivedMessage); string response = "Response from server for the request '" + receivedMessage + "'"; e.ResponseData = System.Text.Encoding.UTF8.GetBytes(response); if (receivedMessage == "close") e.Close = true; }
private void OnDataReceived(DataReceivedEventArgs e) { if (DataReceived != null) DataReceived(this, e); }
private void ProcessRequest() { const int c_microsecondsPerSecond = 1000000; using (clientSocket) { while (true) { try { if (clientSocket.Poll(5 * c_microsecondsPerSecond, SelectMode.SelectRead)) { // If the butter is zero-lenght, the connection has been closed or terminated. if (clientSocket.Available == 0) break; byte[] buffer = new byte[clientSocket.Available]; int bytesRead = clientSocket.Receive(buffer, clientSocket.Available, SocketFlags.None); byte[] data = new byte[bytesRead]; buffer.CopyTo(data, 0); DataReceivedEventArgs args = new DataReceivedEventArgs(clientSocket.LocalEndPoint, clientSocket.RemoteEndPoint, data); socket.OnDataReceived(args); if (args.ResponseData != null) clientSocket.Send(args.ResponseData); if (args.Close) break; } } catch (Exception) { break; } } } }