这是代码:
public static void SendRecive(string host, byte[] msg, ref string HttpResponse)
{
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s.Blocking = true;
s.ReceiveTimeout = -1;
//Socket d=new Socket((AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
s.Connect(host, 80);
s.Send(msg);
byte[] msgout = new byte[1000];
Encoding gbk = Encoding.GetEncoding(936);
int i = 0;
while(true)
{
Array.Clear(msgout, 0, 1000); i = s.Receive(msgout, msgout.Length, SocketFlags.None);
HttpResponse += gbk.GetString(msgout);
if (i <= 0) break;
}
}
catch (Exception e) { Console.WriteLine("Exception caught!!!");
Console.WriteLine("Source : " + e.Source);
Console.WriteLine("Message : " + e.Message);
}
s.Shutdown(SocketShutdown.Receive);
s.Close();
}这种情况,有时能接收到1000个字符,有时2000字符
但是如果是单步调试,就可以收到全部(大概是8000个字符左右)
不知为什么会这样,在这里卡了很久,希望csdn能给我些帮助,谢谢!
public static void SendRecive(string host, byte[] msg, ref string HttpResponse)
{
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s.Blocking = true;
s.ReceiveTimeout = -1;
//Socket d=new Socket((AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
s.Connect(host, 80);
s.Send(msg);
byte[] msgout = new byte[1000];
Encoding gbk = Encoding.GetEncoding(936);
int i = 0;
while(true)
{
Array.Clear(msgout, 0, 1000); i = s.Receive(msgout, msgout.Length, SocketFlags.None);
HttpResponse += gbk.GetString(msgout);
if (i <= 0) break;
}
}
catch (Exception e) { Console.WriteLine("Exception caught!!!");
Console.WriteLine("Source : " + e.Source);
Console.WriteLine("Message : " + e.Message);
}
s.Shutdown(SocketShutdown.Receive);
s.Close();
}这种情况,有时能接收到1000个字符,有时2000字符
但是如果是单步调试,就可以收到全部(大概是8000个字符左右)
不知为什么会这样,在这里卡了很久,希望csdn能给我些帮助,谢谢!
if (i <= 0) break;
当收到的数据长度小于0时就推出么?
当我再把byte[] msgout = new byte[1000];变为byte[] msgout = new byte[1024];又只有一点点数据,这是为什么?怎么会发生这么怪异的事!!!