C# SOCKET编程有BUG
:sweat:标题说不清楚先贴源码
这个是服务端的部分代码 private void Form1_Load(object sender, EventArgs e)
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 6543));
socket.Listen(10);
thread = new Thread(() =>
{
while (true)
{
Socket s = socket.Accept(); /*主要是这句,如果这句放在循环里面的话每个客户端只能发送一次信息 ,如果将这句放到循环上面的话,只有第一个客户端能连上并且可以发送多次 */
byte[] buffer = new byte;
int n = s.Receive(buffer, buffer.Length, 0);
string str = Encoding.Default.GetString(buffer).Trim('\0');
Invoke(new MethodInvoker(() => {
this.textBox1.AppendText(str);
this.textBox1.AppendText("\r\n");
}));
byte[] tmp = Encoding.Default.GetBytes("服务端返回信息...");
s.Send(tmp, tmp.Length, 0);
}
});
thread.Start();
this.Text = "服务器已开启";
} :sweat:终于解决了.........
页:
[1]