我正在寻找一个跨平台解决方案,在dynv6上对我的dyndns执行ping操作,该dynv6绑定到我的ipv6地址,端口8443通过SSL打开。
我希望我的设备检查该地址是否可用于进一步的网络请求。简单的网页请求也是可能的,但即使只用OK()回答,它们的回答时间也是3秒。
所以我想起了平安。我已经找到了System.Net.NetworkInformation.Ping,但这不能很好地工作,因为它总是sais超时。即使我将超时提高到超过1秒。我在我的控制台测试了它,我得到了很好的结果。就在用android启动时它会崩溃。
也许你会发现这很有趣:TcpClient.Connect确实有效。 BeginConnect没有。 “使用了与所请求的协议不兼容的地址”...... 好吧连接很好,但我需要定义一个超时,因为我想在服务器离线时中断。
答案 0 :(得分:0)
因此对于每个遇到TcpClient.BeginConnect问题的人来说,只需要做一点技巧:
TcpClient client = new TcpClient();
Task.Run(() =>
{
client.Connect(host, port);
});
Task.Delay(100).Wait();
然后您可以访问client.Connected属性以查看它是否已在该时间内连接。 仍然不知道为什么我的BeginConnect不起作用..或者为什么连Connect 10分钟之前都没有工作......也许我拼错了一些东西但是啊:)