客户端和服务器端通信程序由2003转换为C#2005调试后总是出错,后来发现是2005线程间相互调用的问题,客户端能调试好,但服务端怎么调试也不正常,
搞了两天,最后希望在这里有高手相助,能够改正下面的程序,或者发一些通信类的代码参考一下,谢谢
程序下载地址:
http://511600.com/singo/客户端和服务器端通信程序.rar

解决方案 »

  1.   

    官方做法是用delegrate和invoke
    简单做法是在窗体设计器里面加
    System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
      

  2.   

    原来使用delegrate和invoke 
    现在加入System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls  =  false;  
    都只能解决类似于lbClients.Items.Add(c);的问题,
    以上方法客户端可以正常运行,服务端也能启动,但运行后客户端连接一次后发信息无反应,断开连接或者第二个客户端要连接就出错了,且没有出错信息,一定是服务端还有问题,但VS2003运行是正常的,
      

  3.   

    多次测试,发现服务端程序执行while第二次后停在client.Receive(buffer);详细代码:
    while (keepalive)
    { Byte[] buffer = new Byte[1024];
    client.Receive(buffer);
    string clientcommand =System.Text.Encoding.ASCII.GetString(buffer);
    ...
      

  4.   

    问题解决了,谢谢各位,问题在这里:Console.WriteLine(clientcommand);