有个需求,就是监听服务器的1200端口,获取数据,数据传输采用XML。(1)在VB下用Winsock控件编写:   tcpClient.RemoteHost = "192.168.1.22"   '服务器ip
   tcpClient.RemotePort = 1200
   tcpClient.Connect   private sub tcpClient_DataArrival(ByVal bytesTotal As Long)
       dim msg as string
       tcpClient.GetData msg
   end sub(2)在C#编写的代码:
    TcpClient client = new TcpClient();
    client.connect(IPAddress.Prase("192.168.1.22"), 1200);    NetworkStream ns = client.GetStream();    int bytesRead = 1024;
    byte[] buffer = new byte[bytesRead];    bytesRead = ns.Read(buffer, 0, bytesRead);
    msg = Encoding.Default.GetString(buffer, 0, bytesRead);问题是VB的代码可以正常接收服务器发送的所有数据,而C#只能接收某些类型的数据。这是什么问题    
    

解决方案 »

  1.   

    首先,你只读入了1024个byte,后面如果还有的话都没有读到。
    其次,你看看读入的byte是否正确,因为你后面转换成string后有的不可显示字符都丢掉了。
      

  2.   

    改成再大也没用,byte读入的数据正确啊!
      

  3.   

    你的知道 不管理什么数据类型 最终都是byte[]的..你可以使用BinaryReader取读这个流..
      

  4.   

    问题是服务器发送很多数据回来,例如<xml>1..., <xml>2....
    而C#的代码只可以接收一类,例如只能收到<xml>1,<xml>2,<xml>3等都收不到。
      

  5.   

    知道问题所在了。
    在VB代码中,我用txtbox显示结果。而C#中用listview显示,为什么listvew会将部分字符串截断?