【问题标题】:Why is my TcpClient not sending information? (C#)为什么我的 TcpClient 不发送信息? (C#)
【发布时间】:2014-08-26 12:57:36
【问题描述】:

我正在制作一个简单的工具,它可以告诉您客户端何时通过 Tcp 连接。由于某种原因,它不会在第一次运行程序时发送它,但它只会在第二次发送它

例如:双击程序 - 没有 再次双击它,它会运行 TcpClient 的东西。

我的代码告诉某人何时连接:

public void ListenForClients()
    {
        while (listening == true)
        {
            TcpClient currClient = listener.AcceptTcpClient();
            clients.Add(currClient);

            byte[] b = new byte[100];
            Socket s = listener.AcceptSocket();
            int k = s.Receive(b);
            string ClientInfo = "";
            for (int i = 0; i < k; i++)
            {
                ClientInfo = ClientInfo + Convert.ToChar(b[i]).ToString();
            }

            clientHandler(currClient, ClientInfo);
        }
    }

    public void clientHandler(TcpClient client, string ClientInfo)
    {
        clientID++;
        this.Invoke(new Action(() =>
            {
                this.Text = "Network Monitor - Connections: " + clientID.ToString();
            }));

        listView1.Invoke(new Action(() =>
            {

                IPEndPoint IP = ((IPEndPoint)client.Client.RemoteEndPoint);
                ListViewItem lvi = new ListViewItem(new string[] { clientID.ToString(), IP.ToString(), ClientInfo });
                this.listView1.Items.Add(lvi);
            }));
    }

我的客户端发送 Tcp 信息的代码

  TcpClient me = new TcpClient();
            me.Connect("127.0.0.1", 2222);
            Stream sendData = me.GetStream();
            ASCIIEncoding text = new ASCIIEncoding();
            byte[] clientInfoByte = text.GetBytes("lol");
            sendData.Write(clientInfoByte,0,clientInfoByte.Length);
            sendData.Close();
            me.Close();

【问题讨论】:

  • AcceptTcpClientAcceptSocket 为同一个客户,似乎根本不对!

标签: c# tcp tcpclient tcplistener


【解决方案1】:

尝试替换

Socket s = listener.AcceptSocket();

Socket s = currClient.Client;

注意:

for (int i = 0; i < k; i++)
{
    ClientInfo = ClientInfo + Convert.ToChar(b[i]).ToString();
}

可以写成

ClientInfo = System.Text.Encoding.ASCII.GetString(b);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    相关资源
    最近更新 更多