如梦幻泡影 发表于 2013-9-19 21:43:58

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 = "服务器已开启";
      }

如梦幻泡影 发表于 2013-9-19 22:57:54

:sweat:终于解决了.........
页: [1]
查看完整版本: C# SOCKET编程有BUG