TCP服务器/客户端连接问题 C#

4

我正在编写一个简单的服务器/客户端来玩一些以前做过的基本游戏。

问题在于,我只能在同一台计算机上连接,而不能通过局域网连接(这是我想让它工作的方式),以下是我正在使用的代码:

服务器:
IPEndPoint Ep = new IPEndPoint(IPAddress.Any, 8000); listener = new TcpListener(Ep); listener.Start();

客户端:
IPAddress direc = IPAddress.Parse(ipManager); Ep = new IPEndPoint(direc, 8000);

问题在于,当我尝试从另一台计算机(显然连接到同一个Wi-Fi)连接时,我会收到以下错误:

连接尝试失败,因为已连接方在一段时间后没有正确响应,或已建立的连接失败,因为已连接的主机没有正确响应 192.168.0.5:8000

我也应该补充一下,这是我尝试连接时的代码:

服务器:
TcpClient client = listener.AcceptTcpClient();

客户端:
client.Connect(Ep);

显然,在连接时服务端从未“接受”连接,但我还没有找出原因。


1
你在用什么编程语言?C++吗?这个平台是什么,Windows还是Linux? - Claudio
哦,抱歉,我忘了提到!这是C#,Visual Studio。我正在开发WPF。 - waclock
你是否已经在Windows防火墙中添加了例外?尝试暂时禁用它并重新连接,检查是否可以正常工作。 - sergiogarciadev
防火墙在两台电脑上都关闭了,还有其他的想法吗?:S - waclock
你能否在两台机器之间来回ping通?这可能是你的WiFi路由器阻止了WAN中的点对点连接。如果ping不起作用,则问题不在于你的代码。 - GETah
2个回答

1

由于它在本地工作,您可能正在使用127.0.0.1localhost作为服务器的侦听接口。尝试使用0.0.0.0使其侦听所有接口或指定要服务器侦听的接口的IP地址。


我正在使用0.0.0.0,但仍然没有任何反应 :/ - waclock
你是否有任何数据包嗅探软件(例如Wireshark)可用于服务器计算机?如果有,您可以尝试连接并检查客户端数据包是否实际到达指定的服务器接口(192.168.0.5)。 - Claudio
看起来是:TCP 0.0.0.0:8000 正在监听 - waclock
当我尝试从客户端连接到服务器时,端点应该是192.168.0.5:8000,对吗?(服务器在192.168.0.5,客户端在192.168.0.9)。 - waclock
让我们在聊天中继续这个讨论 - Claudio
显示剩余3条评论

1

尝试使用telnet或netcat连接端口。检查端口是否可访问。

$ nc 192.168.0.5 8000
$ telnet 192.168.0.5 8000

我该如何使用它?抱歉我很无知 :P - waclock
你必须运行程序并查看发生了什么。你要么会收到端口关闭的消息(或者在nc变体的情况下什么也不会收到),要么会建立连接。 - Igor Chubin
这是C#,不是吗? - waclock
@waclock,这些是Linux程序。既然你说你正在使用C#编程,那么你可能在Windows上,所以你不会有它们。不过你可能有Telnet,这个想法只是为了尝试连接到你的服务器端口,看看它是否在监听。 - Claudio
1
在这里,您可以获得Windows版的Telnet。 您尝试过从Windows命令行简单地对服务器进行ping吗? - Mark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接