我似乎无法找到任何告诉我路由器中的端口是否打开的信息。 这甚至可能吗?检查端口是否打开
的代码,我现在并没有真正似乎工作...
private void ScanPort()
{
string hostname = "localhost";
int portno = 9081;
IPAddress ipa = (IPAddress) Dns.GetHostAddresses(hostname)[0];
try
{
System.Net.Sockets.Socket sock =
new System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork,
System.Net.Sockets.SocketType.Stream,
System.Net.Sockets.ProtocolType.Tcp);
sock.Connect(ipa, portno);
if (sock.Connected == true) // Port is in use and connection is successful
MessageBox.Show("Port is Closed");
sock.Close();
}
catch (System.Net.Sockets.SocketException ex)
{
if (ex.ErrorCode == 10061) // Port is unused and could not establish connection
MessageBox.Show("Port is Open!");
else
MessageBox.Show(ex.Message);
}
}
它是如何失败?结果不符合你的预期,你是否得到例外? – TheEvilPenguin 2012-08-07 00:08:18
如果你的代码连接到端口,它应该说端口是开放的不关闭 – 2012-08-07 00:26:30
@TheEvilPenguin我想说我的端口是开放的,因为我在我的路由器转发它,但它没有连接... – 2012-08-07 00:30:26