我使用Xamarin.Android编写了一个Android应用程序,它使用tcp套接字连接到在我的本地计算机上运行的服务器。只要我的Android设备和我的计算机都连接到我的路由器,这都可以正常工作。现在我用手机连接到我的计算机上的managednetwork createt尝试了同样的事情但是在使用Errorcode 10022调用socket.connect(ipendpoint)时出现了无效的错误。
以下是相关代码:
Socket sck = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp);
IPHostEntry HostDnsEntry = Dns.GetHostEntry ("192.168.173.1");
var endpoint = new IPEndPoint (HostDnsEntry.AddressList [0], 6667);
sck.Connect (endpoint);
正如我所说,我的路由器本地网络中的代码运行良好。哪个可能是问题?
感谢您的帮助。
答案 0 :(得分:0)
提供了一些无效参数(例如,为setsockopt函数指定了无效级别)。在某些情况下,它还引用套接字的当前状态 - 例如,在未侦听的套接字上调用accept。
您的套接字服务器似乎没有绑定并正在侦听192.168.173.1:6667
您可以使用PC上的以下内容从PC连接到基于插槽的服务器吗?
telnet 192.168.173.1 6667
(或其他一些tcp工具,例如nc
,或者192.168.173.1:6667
是否会在port scan
或netstat
中显示?)
如果没有,您的服务器套接字不会绑定到该接口/端口,因此您的Android设备和/或仿真器也无法连接到它。