解决方案 »

  1.   

    晕。BeginConnect是为了性能而这样处理的,它不等连接,就已经执行到 Console.WriteLine(s.Connected.ToString()) 语句了。
      

  2.   

    实验了之后才知道自己问了一个很蠢的问题,不过这个解决了之后,又碰到一个问题:就是在发送的时候,如果这次发的字节数比上次发的字节数少的话,实际发送的是用现在发的字节来覆盖掉原来前面部分,所以总共发的字节长度还是上次发送的长度
    第一次发 this is from client 
    第二次想发:tsis
    结果发送的是:tsis is from client 
    这种怎么弄
      

  3.   

    发送时不要共用什么 Buffer,使用它反而要写多余的代码。这个问题你也应该自己很容易找到原因。
      

  4.   

    你想把发送的数组定义成全局静态数组其实不是问题,问题是你要判断到底发送多少个字节,write函数有重载,可以添加参数,不要无脑每次都把整个数组全部发送
      

  5.   

        while (true)
                        {
                            string str = Console.ReadLine();
                            byte[] bytes = Encoding.ASCII.GetBytes(str);
                            s.BeginSend(bytes, 0, bytes.Length, SocketFlags.None, new AsyncCallback(AnsyncSendCallback), s);
                           
                        }
    发送的代码这样写的,每次从键盘输入的应该是不一样的长度啊,难道它在转成byte数组的时候,是一样的长度?