public void Listen() { // Устанавливаем для сокета локальную конечную точку var ipHost = Dns.GetHostEntry(_ip); var ipAddr = ipHost.AddressList[0]; var ipEndPoint = new IPEndPoint(ipAddr, _port); Console.WriteLine("[SocketListener] OnInit -> Created new EndPoint(" + this._ip + ":" + this._port + ")"); // Создаем сокет Tcp/Ip Listener = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp); // Назначаем сокет локальной конечной точке и слушаем входящие сокеты try { Listener.Bind(ipEndPoint); Listener.Listen(10); Console.WriteLine("[SocketListener] OnListenerBind -> Bound"); // Начинаем слушать соединения while (true) { Console.WriteLine("[SocketListener] Waiting for connection on port " + this._port); // Программа приостанавливается, ожидая входящее соединение var handler = Listener.Accept(); string data = null; // Мы дождались клиента, пытающегося с нами соединиться var bytes = new byte[1024]; var bytesRec = handler.Receive(bytes); data += Encoding.UTF8.GetString(bytes, 0, bytesRec); // Показываем данные на консоли //Console.Write("[SocketListener] Recieved data: " + data); OnMessageRecieve.Invoke(data); if (data.IndexOf("<TheEnd>") > -1) { Console.WriteLine("[SocketListener] Connection aborted."); break; } handler.Shutdown(SocketShutdown.Both); handler.Close(); } } catch (Exception ex) { Console.WriteLine("[SocketListener] " + ex); } }
public override void HandleAction(object sender, Message msg) { OnMessageRecieve?.Invoke(this, msg); }