为什么我的TcpClient不发送信息?(C#)
我正在制作一个简单的工具,告诉你客户端何时通过Tcp连接。出于某种原因,它不会在程序第一次运行时发送,但只会在第二次运行时发送 双击程序-什么都没有 再次双击它,它将运行TcpClient 当有人连接时我的代码:为什么我的TcpClient不发送信息?(C#),c#,tcp,tcpclient,tcplistener,C#,Tcp,Tcpclient,Tcplistener,我正在制作一个简单的工具,告诉你客户端何时通过Tcp连接。出于某种原因,它不会在程序第一次运行时发送,但只会在第二次运行时发送 双击程序-什么都没有 再次双击它,它将运行TcpClient 当有人连接时我的代码: public void ListenForClients() { while (listening == true) { TcpClient currClient = listener.AcceptTcpClient();
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);
}));
}
试着替换
Socket s = listener.AcceptSocket();
与
注意:
for (int i = 0; i < k; i++)
{
ClientInfo = ClientInfo + Convert.ToChar(b[i]).ToString();
}
acceptcpclient
和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);