这是什么意思:
while (Offset < packet.Data.Length)
{
Offset += m_Socket.Receive(packet.Data, Offset, packet.Data.Length - Offset, SocketFlags.None);
}
在Siliverlight?这是Windows窗体,不适用于Silverlight:/任何帮助将不胜感激。
由于
该函数的作用是,在“已完成”子上,我抓住了4个字节,这是我服务器的标头长度,在我抓住那4个字节之后我想进入endReceive方法获取剩余的数据包长度。
我如何在Silverlight中执行此操作?
答案 0 :(得分:4)
Silverlight没有同步Socket方法。您需要使用Socket.ReceiveAsync Method。
这里的好例子:Pushing Data to a Silverlight Client with Sockets。
[编辑] 这样做的基本想法:
var e = new SocketAsyncEventArgs();
e.Completed += SocketReceiveCompleted;
Socket.ReceiveAsync(e);
private void SocketReceiveCompleted(object sender, SocketAsyncEventArgs e)
{
Offset += e.BytesTransferred;
if (Offset > packet.Data.Length)
{
Socket.Close(); // or do whatever you need to do after your while loop
return;
}
Array.Copy(e.Buffer, 0, packet.Data, Offset, e.BytesTransferred);
}