小弟现在在帮老师做任务,制作一个中间服务器,多客户端连接服务器,服务器再根据数据库内容连接对应客户端的终端机器,现在其他部分都完成了,数据通信这块有些问题,以下是我的通讯程序:
   int bytes=0;
   streamToServer=client.GetStream();
   byte[] buffer=new byte[256];
          try
            {
                bytes = streamToServer.Read(buffer, 0, buffer.Length);
                msg = Encoding.Unicode.GetString(buffer, 0, bytes);
            }
            catch (IOException)
            {
                return;
            }
为什么我进行接收和发送,比如发送“111”,终端和服务器接收的都是“1”,“1”,“1”,字符串都被分开了,求解应该怎么办?除了定义消息尺寸的方法,还有其他方法么?
    

解决方案 »

  1.   

    Encoding.Unicode
    发送和接收必须用同样的编码解码
      

  2.   

    谢谢楼上,可以再清楚一点么?我2边通信都是用的Encoding.Unicode,但是为什么还是造成数据的分开,我服务器用的Socket通讯,服务器用的TCPListenter通讯,有影响么?
      

  3.   

    http://blog.csdn.net/fengyarongaa/article/details/6631953
      

  4.   


    你这个是什么意思?我实在看不懂。什么叫做字符串“被分开了”?你不就是一个msg一个字符串么,又不是字符串数组?!
      

  5.   

    使用socket的话,最好使用默认编码,我认为你程序抛异常
    或者说client接受到'1‘  client没有接受完整的信息,就直接处理了?
    而且发字符串的话,最好带上校验值保持数据完整性。
    可以使用发文件的方式尝试。