none
Problema com recebimento de dados via soquete tcp RRS feed

  • Pergunta

  • Olá a todos,

    Estou desenvolvendo uma aplicação que fará um monitoramento de uma instalação. Estou tentando usar a comunicação wifi com a placa ESP8266, depois de algumas pesquisas eu vi mais ou menos como funciona. Encontrei um código no site da devmedia e utilizei a parte que faz o software cliente. Até agora eu consigo me conectar com a placa e enviar dados mas não recebo as informações que a placa envia para o programa. Segue o código:

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Threading;
    using System.Net.Sockets;
    using System.IO;
    namespace Clientee
    {
        public class Client : System.Windows.Forms.Form
        {
            private System.Windows.Forms.TextBox Envia;
            private System.Windows.Forms.TextBox Exibe;
            private NetworkStream sockStream;
            private BinaryWriter escreve;
            private BinaryReader le;
            private string message = "";
            private Thread tipoThread;
            /// <summary>
            /// Required designer variable.
            /// </summary>
            private System.ComponentModel.Container components = null;
            public Client()
            {
                InitializeComponent();
                tipoThread = new Thread(new ThreadStart(RunClient));
                tipoThread.Start();
            }
            /// <summary>
            /// Clean up any resources being used.
            /// </summary>
            protected override void Dispose(bool disposing)
            {
                if (disposing)
                {
                    if (components != null)
                    {
                        components.Dispose();
                    }
                }
                base.Dispose(disposing);
            }
            #region Windows Form Designer generated code
            // Supressão do código gerado para o form
            #endregion
            [STAThread]
            static void Main()
            {
                Application.Run(new Client());
            }
            protected void Client_Closing(object sender, CancelEventArgs e)
            {
                System.Environment.Exit(System.Environment.ExitCode);
            }
            protected void Envia_KeyDown(object sender, KeyEventArgs e)
            {
                try
                {
                    if (e.KeyCode == Keys.Enter)
                    {
                        escreve.Write(Envia.Text);
                        Exibe.Text += Envia.Text;
                        Envia.Clear();
                    }
                }
                catch (SocketException)
                {
                    Exibe.Text += "Atenção! Erro...";
                }
            }
            public void RunClient()
            {
                TcpClient cliente;
                try
                {
                    cliente = new TcpClient();
                    cliente.Connect("192.168.1.12", 80);
                    //Se preferir altere localhost pelo IP do server
                    sockStream = cliente.GetStream();
                    escreve = new BinaryWriter(sockStream);
                    le = new BinaryReader(sockStream);
                    do
                    {
                        try
                        {
                            message = le.ReadString();
                            Exibe.Text += message;
                        }
                        catch (Exception)
                        {
                            System.Environment.Exit(System.Environment.ExitCode);
                        }
                    } while (message != "F");
                    escreve.Close();
                    le.Close();
                    sockStream.Close();
                    cliente.Close();
                    Application.Exit();
                }
                catch (Exception error)
                {
                    MessageBox.Show(error.ToString());
                }
            }
        }
    }

    Não sei o que pode estar acontecendo para não receber a mensagem. Não ocorre nenhum erro nem exception. Alguem teria alguma ideia do que pode estar acontecendo?

    Desde já agradeço a atenção.

    sexta-feira, 13 de abril de 2018 16:10

Respostas

  • Compreendendo melhor a linguagem, estou tentando usar o código que tem na documentação da Microsoft o TcpClient. Parece que vai dar certo.
    segunda-feira, 16 de abril de 2018 14:14

Todas as Respostas

  • Olá,,

    a pouca experiência que tenho com sockets. Você consegue conectar, enviar os dados, mas quando vai ler o que a placa está te  enviando, ele para  nessa linha le.ReadString()? É porque a outra ponta não está te enviando os dados.



    sexta-feira, 13 de abril de 2018 17:32
    Moderador
  • Compreendendo melhor a linguagem, estou tentando usar o código que tem na documentação da Microsoft o TcpClient. Parece que vai dar certo.
    segunda-feira, 16 de abril de 2018 14:14