public void ReceiveStart()
{
try
{
byte[] blen = new byte[4];
skt.Receive(blen, 0, 4, SocketFlags.Peek);
int len = BitChanger.NetWorkToInt32(blen, 0);
byte[] data = new byte[len];
skt.BeginReceive(data, 0, len, SocketFlags.None,new AsyncCallback(Receive_Callback),null);//这个data需要传递给下面的Callback函数
}
catch
{ }
}private void Receive_Callback(IAsyncResult ar)
{
try
{
Head hd = new Head();
hd.Parse(data, 0); //这里的data是从上面接收到的数据
ql.AddList(hd);
ReceiveStart();
skt.EndReceive(ar);
}
catch
{ }
}
不一定要按我写的格式,只要给我个方案就可以了。
另注,以下方案不可行:
1。把data变成全局或者作为本类中的成员变量
2。该成同步套接字
{
try
{
byte[] blen = new byte[4];
skt.Receive(blen, 0, 4, SocketFlags.Peek);
int len = BitChanger.NetWorkToInt32(blen, 0);
byte[] data = new byte[len];
skt.BeginReceive(data, 0, len, SocketFlags.None,new AsyncCallback(Receive_Callback),null);//这个data需要传递给下面的Callback函数
}
catch
{ }
}private void Receive_Callback(IAsyncResult ar)
{
try
{
Head hd = new Head();
hd.Parse(data, 0); //这里的data是从上面接收到的数据
ql.AddList(hd);
ReceiveStart();
skt.EndReceive(ar);
}
catch
{ }
}
不一定要按我写的格式,只要给我个方案就可以了。
另注,以下方案不可行:
1。把data变成全局或者作为本类中的成员变量
2。该成同步套接字
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货