本帖最后由 FMNISME 于 2012-02-22 10:56:40 编辑

解决方案 »

  1.   

    这个不是网络通信不稳定,是你程序设计有问题。空字符串有可能是你建立连接或者断开连接时接收到的消息?
    这样试试:
    while (true)
                {
                    allDone.WaitOne();
                    server.BeginAcceptTcpClient(receiveMsg, server);
                }
    bool flag = false;
    while (stream.DataAvailable)//没有数据就会跳过
                        {
                            dataLength = stream.Read(buffer, 0, buffer.Length);
                            str = Encoding.ASCII.GetString(buffer, 0, dataLength);
                            flag  = true;
                        }
    if(flag)
    {
    string msg = Encoding.ASCII.GetString(buffer);
                        textBox.Text +="\r\n"+msg;//显示出接收到的消息
    }
      

  2.   

    按照你这样试过了,不行的。我觉得没必要使用flag=false,因为我不是要接收到空数据就丢弃,而是避免:android发送的是字符串,我接收到的却是空字符串。而且,我以前C#对C#用socket通信时,也会这样。服务器和客户端在一台电脑上测试很正常,然后跨互联网测试数据就传不过去了。
      

  3.   

    TCP 是基于流的协议。。必须要自行处理粘在一起的 or 从中切开的封包。