我一直在尝试对端口7751上“侦听”TCP连接的程序进行故障排除。在Windows 7及之前,有时我必须在任何存在的防火墙软件中启用该端口,否则它可以正常工作。
在Windows 8 Consumer Preview上进行测试时,我的应用程序无法启动其“侦听”服务,我收到错误:“无法建立连接,因为目标计算机主动拒绝它”。
我完全关闭了Windows防火墙,以消除它,但问题仍然存在(此Win8机箱上没有安装其他安全软件)。
为了消除我的程序,我浏览了控制面板中的“打开/关闭Windows功能”小程序,并安装了Telnet服务器和客户端。我已经启动了Telnet服务(并使其自动化),并且还将“Everybody”和我自己添加到TelnetClients本地组中。
当我从命令行运行时:
telnet 192.168.100.93 7751
我被告知“无法在端口7751上打开与主机的连接”。
我尝试了以下内容:
netstat -an |找/我“听”
但是没有列出端口7751(应该监听它的程序正在运行)。
此端口未被防火墙阻止,因为它已关闭。
我尝试telnet到netstat命令列出的另一个端口,它运行正常。
我的应用程序使用以下命令连接到端口:
System.Net.Sockets.TcpClient tcpc = new TcpClient();
tcpc.Connect(server, port);
但是.Connect会立即将其发送到
catch(SocketException s)
报告“由于目标服务器主动拒绝连接,因此无法建立连接”。请注意,“目标服务器”本身就是。
我的应用程序是一个常规的Windows窗体应用程序,在C#中,由Visual Studio 2005(.net 2.0)在Windows 8盒子本身上构建...
我做错了什么?
编辑:在回答下面的问题时,开始收听的代码是:
private TcpListener tcpL;
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, Configuration.portNumber);
tcpL = new TcpListener(ipEndPoint);
tcpL.Start();
(ipAddress和Configuration.portNumber分别是我的IP地址192.168.100.93和7751)。
这段代码在try / catch中,并没有进入catch,所以我认为它开始了吗?
答案 0 :(得分:1)
假设您列出的命令返回有效数据而192.168.100.93
是您计算机的IP地址(您可以使用127.0.0.1
代替),您的客户端将无法连接,因为那里什么都不是在听港口。
您的侦听应用程序是否使用TcpClient侦听端口?如果没有,则问题出在您的应用程序上,所以请改为显示该代码。