2009-02-13 116 views
3

我正在使用C#编写一个简单的hello world TCP/IP客户机服务器应用程序,但无法让我的客户机连接。任何人都可以提供任何其他疑难解答步骤我开始江郎才尽......由于目标机器主动拒绝,因此无法建立连接

这里是代码的有关章节:

服务器:

Console.Out.WriteLine("About to bind address"); 
IPAddress ipAd = IPAddress.Parse("127.0.0.1"); 
Console.Out.WriteLine("Choose a port to bind..."); 

String port = Console.In.ReadLine(); 
int iPort = Int32.Parse(port); 

TcpListener myList = new TcpListener(ipAd, iPort); 

myList.Start(); 

Console.WriteLine("The server is running at: "+myList.LocalEndpoint); 
Console.WriteLine("Waiting for a connection....."); 

Socket s = myList.AcceptSocket(); 
Console.WriteLine("Connection accepted from " + s.RemoteEndPoint); 

客户端:

Console.Out.WriteLine("enter address: "); 
string address = Console.In.ReadLine(); 
Console.Out.WriteLine("enter port: "); 
int port = Convert.ToInt32(Console.In.ReadLine()); 

TcpClient tcpclnt = new TcpClient(); 
Console.WriteLine("Connecting....."); 

Console.Out.WriteLine("Address: " + address + ":" + port); 
tcpclnt.Connect(address, port); 

我能从客户端计算机ping服务器,但是我无法使用绑定的端口telnet到服务器。我尝试了各种端口(少数在8000和40000左右)。我已在两个系统上禁用Windows防火墙。系统连接到不在互联网上的路由器。我尝试了使用和不使用端口转发设置将给定端口上的传入请求转发到服务器计算机,但没有任何效果。

,我已经能够捕获唯一的例外是由客户端抛出:

无连接可以作出,因为 目标机器积极地拒绝它 。

我检查了一个InnerException但似乎没有 - 这是基本的例外。这是对的吗?

不知道还有什么我应该看 - 任何其他故障排除步骤将是有益的。

谢谢!

回答

5

上面的代码监听请求从环回地址来倾听。这将有效地只监听该网络上的连接,并且该网络仅包含您的计算机。

您是否尝试过侦听绑定到网络的地址?在本地网络上,它应该是类似于192.168.x.x或10.x.x.x的东西

+0

我应该刚刚问过你 - 首先就是这样。任何想法为什么它有所作为? – 2009-02-13 18:55:58

+1

您的机器同时坐在多个IP网络上,在您的情况下,环回和本地网络。你明确要求只听127.0.0.1,而127.0.0.1/32上的唯一一台机器是你的。机器可以连接到自己(通过127.0.0.1/32),但没有其他人可以。 – Coincoin 2009-02-13 20:45:24

3

尝试netstat -al你的机器上(确切的命令行Windows和UNIX之间变化),看看服务器的端口

+0

不错的想法 - 已经试过这个,它声称预期的端口是绑定和倾听! – 2009-02-13 18:37:22

1

为什么不使用.NET Remoting?它比做TCP/IP客户端服务器更好。您可以在对象之间传递消息。

+0

是我做了一些复杂而值得我认为我会采取你的建议,但是我正在写atm *需要*的软件是痛苦的简单,以便适合我们。另外我不需要来回传递物体。我会记住寿! – 2009-02-13 19:05:48

1

您是否曾尝试在同一台计算机上运行客户端服务器以确保首先进行连接?除此之外,尝试使用分配的路由器或运行服务器的机器的静态IP与绑定到环回。

9

我以前碰到过这个。诀窍是绑定到0.0.0.0而不是127.0.0.1。当绑定到127.0.0.1时,服务器将只接受来自本地主机的连接。绑定到0.0.0.0它将接受所有请求。

您也可能想从客户端获得主机,并查看它认为正在打开的端口。

编辑:如果你硬编码机器的IP地址在其中,监听器将只侦听该网络接口。如果您使用0.0.0.0,监听器将监听所有可用的网络接口。这包括您的计算机和USB连接的手持设备之间的接口,第二块网卡或VPN链接。

相关问题