有个需求,就是监听服务器的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#只能接收某些类型的数据。这是什么问题
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#只能接收某些类型的数据。这是什么问题
其次,你看看读入的byte是否正确,因为你后面转换成string后有的不可显示字符都丢掉了。
而C#的代码只可以接收一类,例如只能收到<xml>1,<xml>2,<xml>3等都收不到。
在VB代码中,我用txtbox显示结果。而C#中用listview显示,为什么listvew会将部分字符串截断?