public void Iniciar(string host, int port, MensagemRecebidaCallback mesagemRecebida) { try { clientCount = 0; listener = new TcpListener(IPAddress.Parse(host), port); listener.Start(); listener.Server.ReceiveTimeout = RECEIVE_TIMEOUT; listener.Server.SendTimeout = SEND_TIMEOUT; } catch (SocketException se) { throw new Exception("Falha na espera das requisições remota, verifique se existe outra instância do Agente de Conexão Remota", se); } if (mesagemRecebida == null) throw new ArgumentException("Argumento mensagemRecebida não pode ser nulo."); StartAccept(mesagemRecebida); }
private void AguardarMensagem(TcpClient client, NetworkStream stream, MensagemRecebidaCallback callback) { string data = null; while (true) { if (!client.Connected) return; try { data = WebSocketPacket.Read(stream); } catch (Exception e) { Debug.WriteLine(e.ToString()); client.Close(); } Debug.WriteLine("Read: {0}", data); callback(this, data); } }
public void StartAccept(MensagemRecebidaCallback mesagemRecebida) { listener.BeginAcceptTcpClient(DoAcceptTcpClient, mesagemRecebida); }
public WebSocketClient(TcpClient client, MensagemRecebidaCallback callback) { _client = client; string data = null; using (var stream = client.GetStream()) { data = Accept(stream); if (data.Length > 3 && data.Substring(0, 3) == "GET") { var handshake = WebSocketPacket.HandShake(data); var buffer = Encoding.UTF8.GetBytes(handshake); stream.Write(buffer, 0, buffer.Length); } AguardarMensagem(client, stream, callback); } }