简体   繁体   English

套接字通信输出问题

[英]Socket communication output issue

In getting used to Sockets using Client server communication here is my code. 在习惯使用客户端服务器通信的套接字时,这里是我的代码。

   //server partl
        try
        {
            IPAddress ipAd = IPAddress.Parse("127.0.0.1"); //use local m/c IP address, and use the same in the client

            /* Initializes the Listener */
            TcpListener myList = new TcpListener(ipAd, 8020);

            /* Start Listeneting at the specified port */
            myList.Start();


            Socket s = myList.AcceptSocket();
            Console.WriteLine("Connection accepted from " + s.RemoteEndPoint);

            byte[] b = new byte[100];
            int k = s.Receive(b);
            //Console.WriteLine("Recieved...");

            //Writes to label1
            for (int i = 0; i < k; i++)
                label1.Text = b[i].ToString();



            //ASCII endoing to use ACK.
            ASCIIEncoding asen = new ASCIIEncoding();
            s.Send(asen.GetBytes("The string was recieved by the server."));
            Console.WriteLine("\nSent Acknowledgement");

            /* clean up */
            s.Close();
            myList.Stop();


        }
        catch (Exception ex)
        {
            Console.WriteLine("Error..... " + ex.StackTrace);
        }


        //Client part

        try
        {
            TcpClient tcpclnt = new TcpClient();
            Console.WriteLine("Connecting.....");

            tcpclnt.Connect("127.0.0.1", 8020); // use the ipaddress as in the server program

             Console.WriteLine("Connected");
             Console.Write("Enter the string to be transmitted : ");

             //gets the text from textbox
            String str = textBox1.Text;
            Stream stm = tcpclnt.GetStream();

            ASCIIEncoding asen = new ASCIIEncoding();
            byte[] ba = asen.GetBytes(str);
            Console.WriteLine("Transmitting.....");

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

            byte[] bb = new byte[100];
            int k = stm.Read(bb, 0, 100);

            for (int i = 0; i < k; i++)
                Console.Write(Convert.ToChar(bb[i]));


            tcpclnt.Close();

        }

        catch (Exception ex)
        {
            Console.WriteLine("Error..... " + ex.StackTrace);
        }


    }

I am using a form to communicate on local host and writing a one .cs file and want to show the text(from textbox) from Client-labelled portion to the label on server-labelled portion. 我正在使用一种形式在本地主机上进行通信,并编写了一个.cs文件,并希望显示从客户端标签部分到服务器标签部分上的标签的文本(来自文本框)。

Any idea why its not showing output?. 知道为什么它不显示输出吗? New to sockets !!! 套接字新手!!!

在此处输入图片说明

When socket receives the data instead of loop simply use this: 当套接字接收数据而不是循环时,只需使用以下命令:

if (k > 0)
    label1.Text = Encoding.UTF8.GetString(b);

Also you can use this for simply send and receive data using TcpClient which is a wrapper around socket. 您也可以使用来简单地使用TcpClient发送和接收数据,TcpClient是套接字的包装器。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM