【发布时间】: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();
【问题讨论】:
-
AcceptTcpClient和AcceptSocket为同一个客户,似乎根本不对!
标签: c# tcp tcpclient tcplistener