【问题标题】:TCP server/client connection issue C#TCP服务器/客户端连接问题C#
【发布时间】:2012-07-04 09:17:20
【问题描述】:

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

问题是我只能在同一台计算机上进行连接,而不是通过 LAN(因为我希望它可以工作),这是我正在使用的代码:

服务器:
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);

显然,当我连接服务器时,从不“接受”连接,但我无法弄清楚为什么会这样。

【问题讨论】:

  • 您使用什么语言? C++?这是什么平台,windows还是linux?
  • 哦,对不起,我忘了说!它是 C#,Visual Studio。我正在开发 WPF
  • 您是否为 windows 防火墙添加了例外?尝试禁用它进行测试并尝试再次连接,检查它是否有效。
  • 两台电脑的防火墙都关闭了,还有其他想法吗? :S
  • 你能来回ping你的两台机器吗?可能是您的 WiFi 路由器阻塞了 WAN 中的点 2 点连接。如果 ping 不起作用,则问题不在于您的代码

标签: c# tcp tcpclient tcplistener


【解决方案1】:

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

【讨论】:

  • 我正在使用 0.0.0.0,仍然没有:/
  • 你尝试过这样的事情吗? new IPEndPoint(IPAddress.Parse("0.0.0.0"), 8000)
  • 服务器计算机上是否有任何类型的数据包嗅探软件(例如Wireshark)?如果你这样做了,你可以尝试连接并检查客户端数据包是否实际到达指定的服务器接口(192.168.0.5)。
  • 尝试运行您的服务器,然后在 DOS 提示符下发出此命令:netstat -a | find "LISTENING"。如果服务器工作正常,它应该将端口 8000 显示为正在侦听。
  • 出现:TCP 0.0.0.0:8000 LISTENING
【解决方案2】:

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

$ nc 192.168.0.5 8000
$ telnet 192.168.0.5 8000

【讨论】:

  • 我该如何使用它?抱歉我的无知:P
  • 你必须运行程序看看发生了什么。要么您将收到端口已关闭的消息(或者在 nc 变体的情况下没有消息),或者您将获得连接。
  • 这是 C#,那不是 C# 吗?
  • @waclock,这些是 linux 程序。既然你说你正在用 C# 编程,你可能在 Windows 上,所以你不会拥有它们。虽然您可能有 Telnet,但这个想法只是尝试连接到您的服务器端口以查看它是否正在侦听。
  • labnol.org/software/windows-telnet-command/18222 在这里你可以拥有 windows 的 Telenet。您是否尝试过简单地 ping 服务器? (可能从 Windows 命令行)
猜你喜欢
  • 2012-08-31
  • 1970-01-01
  • 2019-06-18
  • 2020-07-15
  • 2011-07-01
  • 2021-08-12
  • 1970-01-01
  • 2021-04-01
  • 2015-08-29
相关资源
最近更新 更多