gpt4 book ai didi

silverlight - Silverlight 4套接字ConnectAsync返回成功,但套接字未连接

转载 作者:行者123 更新时间:2023-12-03 11:56:12 25 4
gpt4 key购买 nike

我有一个策略文件服务器已启动并正在运行。有一阵子我得到了AccessDenied,因为策略文件没有正确设置。现在,我不再收到该错误,所以我知道这不是问题所在。我有一台运行简单的服务器的简单服务器,它接受来自任何地址的客户端连接。我还编写了一个简单的客户端,因此我知道服务器可以工作。在Silverlight中,设置参数,然后调用ConnectAsync。它立即在localhost上返回(很有意义),当我检查args LastOperation事件为Connect并且SocketError为Success时。但是,当我检查我的 socket 时,它根本没有连接。有任何想法吗..?在这上面,我的头一直撞在墙上几个小时。

我尝试过的其他几件事。我将服务器从本地机器上移到了另一台服务器上。还是没用。我做了一个数据包捕获,发现它正在接收Poilcy文件,但是在那之后,浏览器没有发出任何数据包甚至试图连接到其他服务器。

    public void Connect(string ip)
{
SocketAsyncEventArgs saea = new SocketAsyncEventArgs();
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
var endpoint = new IPEndPoint(IPAddress.Parse(ip), 4502);
saea.UserToken = socket;
saea.RemoteEndPoint = endpoint;
saea.Completed += new EventHandler<SocketAsyncEventArgs>(AsyncEventComplete);
var completedSync = socket.ConnectAsync(saea);
if (completedSync)
{
AsyncEventComplete(null, saea);
}

Result = ip;
}

void AsyncEventComplete(object sender, SocketAsyncEventArgs e)
{
switch (e.LastOperation)
{
case SocketAsyncOperation.Connect:
MessageBox.Show("CONNECTED");
break;
case SocketAsyncOperation.Receive:
MessageBox.Show("DATA RECEIEVED");
// do stuff
break;
}
}

最佳答案

我认为您应该使用e.SocketError而不是e.LastOperation

您也可以使用e.ConnectSocket(仅在Silverlight中)

在这种情况下,您还应该添加“not”:if(!completedSync)

关于silverlight - Silverlight 4套接字ConnectAsync返回成功,但套接字未连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6947948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com