/// <summary> /// Send data async to the connected socket /// </summary> /// <param name="client"></param> private static void Send(ConnectedObject client) { while (true) { resetEvent.Reset(); Console.WriteLine("Please Enter your message:"); client.SetOutgoingMessage(Console.ReadLine()); byte[] byteMessage = client.ConvertStringToByte(client.OutgoingMessage); try { client.ClientSocket.BeginSend(byteMessage, 0, byteMessage.Length, SocketFlags.None, new AsyncCallback((IAsyncResult ar) => { }), client); } catch (SocketException ex) { Log.Error(ex.Message); client.Disconnect(); Thread.CurrentThread.Interrupt(); return; } catch (Exception ex) { Log.Error(ex.Message); Thread.CurrentThread.Interrupt(); return; } resetEvent.WaitOne(); } }
/// <summary> /// Close socket send/receive /// </summary> /// <param name="client"></param> private static void CloseClientSocket(ConnectedObject client) { Console.WriteLine("Client disconnected"); client.Disconnect(); if (Clients.Contains(client)) { Clients.Remove(client); } }
/// <summary> /// Receive data from a bound socket /// </summary> /// <param name="client"></param> private static void Receive(ConnectedObject client) { int bytesRead = 0; while (true) { try { bytesRead = client.ClientSocket.Receive(client.Buffer, SocketFlags.None); } catch (SocketException ex) { Log.Error(ex.Message); client.Disconnect(); Console.WriteLine("Server Disconnect"); } catch (Exception ex) { Log.Error(ex.Message); } if (bytesRead > 0) { if (bytesRead > 0) { client.SetIncomingMessage(bytesRead); Console.WriteLine(client.IncomingMessage); bytesRead = 0; resetEvent.Set(); } } } }