两个单独的socket.Send()方法调用将数据打包在一起

时间:2019-06-20 14:07:49

标签: c# tcpsocket

在服务器端,我必须传输大量数据,并且必须重复且尽可能快地完成它。我目前正在做的是

  1. 获取要发送的数据长度
  2. 将整数转换为字符串
  3. 首先发送数据长度
  4. 然后发送实际数据
[Route("api/entity/SaveConfiguration")]
[HttpPut]
public void SaveConfiguration(string data){
...
var page = HttpContext.Current.CurrentHandler as Page; 
var Ob = FileList.Where(x => x.UserDefinedName == configurationFileName).FirstOrDefault();
if (!(Ob ==  {null)) {
string pg = "Test";
page.ClientScript.RegisterStartupScript(this.GetType(), "Popup", string.Format("ShowPopup('{0}');", pg), true);
...
}

一切似乎都可以正常工作,但是突然在客户端收到数据时,我会执行以下操作:

               byte[] dataLength = Encoding.ASCII.GetBytes(""+data.Length);
               serverSocket.Send(dataLength);
               serverSocket.Send(data);

有时在字符串内部应该只表示数据长度,实际数据却以某种方式出现在其中。

基本上我的问题是:为什么单独的socket.Send()方法将数据组合在一起。

例如,客户端上显示的是123123 ???? 问号代表大量数据(第二个socket.Send()方法调用)和123123(第一个socket.Send()方法调用)代表要发送的数据量)

0 个答案:

没有答案