微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Windows窗体方法的C#Silverlight Equivlant?

这相当于什么?

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中做到这一点?

解决方法:

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);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐