感谢您阅读我的帖子。
你能帮我解释一下以下这行来自" netstat -anb"的意思是:
Proto Local Address Foreign Address State
TCP 192.168.2.241:52440 64.233.166.103:443 ESTABLISHED
[firefox.exe]
特别是:
你能猜出" firefox.exe"知道它可以使用这个端口(不干扰已绑定到该端口的另一个程序)?
事实上," firefox.exe"正在使用很多端口。 例如,现在在192.168.2.241," firefox.exe"正在使用ports nro 52163,57019,57022,57030,57045,57046,57049,57051。
我问这一切是因为我想编写一个绑定到TCP端口的程序,以便在安装程序的机器和使用套接字的Internet上的远程机器之间进行通信。
与#34; Firefox"相反我只需要安装程序的机器上的一个TCP端口。
我只需要这个机制工作一次,第一次执行程序(这不是程序的永久功能)。
运行程序的机器是Windows机器。
我会用C / C ++编程。
最好的问候。
以下是对我原始问题的补充。
嗯,道歉,也许你是对的:在用户的防火墙中添加例外也许是错的... 我的意思是"在用户的防火墙中添加例外"正在做这样的事情:
netsh advfirewall firewall add rule name="An exn" dir=in action=allow protocol=TCP localport=6667 program="where/the/program/is/stored/prog.exe" enable=yes
直到现在,我认为,如果一个应用程序已经"使用"一个TCP端口供自己使用,没有其他应用程序可以使用"这个港口非常相同。 (我意识到"使用"这个词是非常不精确的。我很高兴能够更准确地制定东西...) 我这样说是因为,因为我需要一个TCP端口,所以我想知道我是否可以使用"已经可用的" TCP端口......(当我说"已经可用",我不知道我的意思(也许我想说"打开"和#34;可绑定的" /或已经被另一个应用程序使用的端口#34;我正在考虑TCP端口80,这通常是#34;可用" ...再次,我希望我可以对此更加具体。)
请让我尝试重新制定我愿意做的事情。
能够在" M"之间进行这种双向通信。和" RS",我需要"有"机器上的TCP端口" M"从哪个" setup.exe"可以接收" RS"发送的信息。 (" RS"对我来说不是问题,我可以做任何我想做的事。)
鉴于我对" M"除了事实上它是Windows机器(特别是我不知道什么样的防火墙保护它等)之外,我还不知道如何正确处理问题。我想避免的是" setup.exe"无声地失败而没有告诉为什么机器上的TCP端口" M"不能"使用"。
鉴于我需要有一个可用的TCP端口"对于程序" setup.exe"在机器M上运行,我应该遵循哪些步骤,以使用户尽可能顺利。
假设我试图"使用" TCP端口6667,并假设我没有"允许"至。 除了防火墙或其他应用程序已经"使用"这个端口,这个端口不可用的原因是什么?
我模拟了两台机器" M"和" RS"基本上使用此代码http://msdn.microsoft.com/en-us/library/windows/desktop/ms737889%28v=vs.85%29.aspx。
我希望这些文献不会过于难以消解,对于近似和误解感到抱歉。
感谢您的帮助。最好的问候。
答案 0 :(得分:-1)
这是否意味着在IP为192.168.2.241的机器上打开了TCP端口52440?
可能,但更可能意味着防火墙中根本没有出站端口规则,因为它不应该是没有意义的。
这是否意味着" firefox.exe"是绑定到这个端口?
这意味着 firefox.exe
的套接字绑定到该端口。它可以有许多其他套接字,通常也可以。
我想编写一个绑定到TCP端口的程序,以便在安装程序的机器和使用套接字的Internet上的远程机器之间进行通信。
您需要说明您的程序是客户端还是服务器。如果它是客户端,它就像Firefox一样,并且您没有问题。如果它是服务器,则必须绑定到防火墙中打开的端口,而Firefox完全无关紧要。
与#34; Firefox"相反我只需要安装程序的机器上的一个TCP端口。
听起来像服务器,但你需要告诉我们。为简单起见,我假设它是来自这里的服务器。
我只需要这个机制工作一次,第一次执行程序(这不是程序的永久功能)。
你根本不需要这种机制。您需要用户打开端口。用户不会喜欢破坏他的防火墙配置的软件,假设你可以做到这一点,你不应该这样做。
如何选择此端口?
由你。现在就选择它。使用IANA未预留的内容。
如何以编程方式(非手动)选择此端口?
您可以指定端口0,但是您必须告诉用户,以便他可以在防火墙处打开它。
如果防火墙阻止使用任何端口/所选端口,程序将如何运行?
传入连接不会成功,因此程序将不执行任何操作。
是否可以通过编程方式将异常添加到防火墙以打开此端口?
不知道,但这是一个坏主意,见上文。