本人最近用C#写了一个客户端,需要和JAVA写的服务器进行通信。通信的做法是和服务器约定好协议,将协议的字符串,转化为比特流,用TCP的socket进行传输,如下:
IPEndPoint iep = new IPEndPoint(xxx,xxx);
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(iep);
string control = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
byte[] by = System.Text.Encoding.ASCII.GetBytes(control.ToCharArray());
socket.Send(by, by.Length, SocketFlags.None);
问题出现了:如果我发的control内容比较长,服务器那边接收到的,就是很多段的流,每个最长537!但我这边发送的时候,并没分割成这么多段传送啊!什么原因造成的?如何解决?在线等高手解答!
IPEndPoint iep = new IPEndPoint(xxx,xxx);
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(iep);
string control = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
byte[] by = System.Text.Encoding.ASCII.GetBytes(control.ToCharArray());
socket.Send(by, by.Length, SocketFlags.None);
问题出现了:如果我发的control内容比较长,服务器那边接收到的,就是很多段的流,每个最长537!但我这边发送的时候,并没分割成这么多段传送啊!什么原因造成的?如何解决?在线等高手解答!
乌托邦主·蛤蟆: 我们传输的流并不长啊,也就2,3k的一段流。而且java服务器那端,用java写个测试程序,给服务器发一段2k的流,是可以正常接收的,和我的C#程序就不能正常接收。
很感谢2位,要是看到的话,再帮我解答下问题。明天结贴散分。