none
enviar cadena tcp RRS feed

  • Pregunta

  • Hola, tengo pocos conocimientos de C# y estoy haciendo un pequeño proyecto en el cual quiero mandar dos ordenes para activar dos relés en una tarjeta ethernet, las cadenas son 0x20, 0x01, 0x14 y 0x20, 0x02, 0x14, no tengo que usar consola ni nada solo mandar esas dos cadenas, me funciona desde visual estudio pero después no funciona correctamente el fichero .exe, , el código lo he ido haciendo con otros programas que he encontrado en la web pero hay cosas que creo que sobran pero si las quito ya deja de funcionar ¿me podéis ayudar a arreglar este churro?, Gracias, un saludo.              

    using System;
    using System.IO;
    using System.Net;
    using System.Text;
    using System.Net.Sockets;


    public class clnt
    {

        public static void Main()
        {

    try
            {

                TcpClient tcpclnt = new TcpClient();
                tcpclnt.Connect("192.168.11.200", 17494);
                // use the ipaddress as in the server program

    Stream stm = tcpclnt.GetStream();


                byte[] r1 = new byte[] { 0x20, 0x01, 0x14 };
                byte[] r2 = new byte[] { 0x20, 0x02, 0x14 };

                stm.Write(r1, 0, r1.Length);
                stm.Write(r2, 0, r2.Length);

                String str = Console.ReadLine();

                ASCIIEncoding asen = new ASCIIEncoding();
                byte[] ba = asen.GetBytes(str);

                stm.Write(ba, 0, ba.Length);

                tcpclnt.Close();

            }
            catch { }

    miércoles, 4 de marzo de 2020 9:09

Todas las respuestas

  • hola

    >>me funciona desde visual estudio pero después no funciona correctamente el fichero .exe

    Recomendaria quites el

    catch { }

    que tienes en el codigo, asi te enteras porque es que no funciona

    Si hay un error nunca se te va a informar porque no haces nada con el error

    quizas debas varlo usando

     catch(Exception ex) {
    
       Console.WriteLine(ex.Message);
    
    }


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 4 de marzo de 2020 11:54
  • Gracias por la respuesta. He hecho el cambio indicado pero sigo igual. Mi duda es si con el siguiente codigo, ¿ se enviarían las dos cadenas?

                byte [] r1 = new byte[] { 0x20, 0x01, 0x14 };
                byte [] r2 = new byte[] { 0x20, 0x02, 0x14 };

                stm.Write(r1, 0, r1.Length);
                stm.Write(r2, 0, r2.Length);

    Saludos

    miércoles, 4 de marzo de 2020 17:35