【问题标题】:I can't connect to the server (C#)我无法连接到服务器(C#)
【发布时间】:2016-03-17 19:01:24
【问题描述】:

我有 C# 编程语言的服务器和客户端脚本。当我在我的计算机上创建服务器并从另一台计算机尝试连接到服务器时,它会显示:

一个现有的连接被远程主机强行关闭

当我将服务器的 IP 更改为 0.0.0.0 (IPAdress.Any) 时发生这种情况

连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应

当我将服务器的 IP 更改为 10.0.0.6(在 ipconfig - IPv4 上)的 IPv4 时,就会发生这种情况。

我也关闭了防火墙,并在路由器的网站上打开了端口(11000)。

我在客户端中输入了服务器的公共 IP 地址(位于 whatismyip.com 上)。

程序在本地网络上运行良好(我的意思是当两台计算机具有相同的网络时)。

脚本:

有人知道怎么解决吗?

【问题讨论】:

  • 客户端和服务器在哪里?您是否尝试过运行 WireShark 来查看它们的通信方式? (您可以确认对话是否已打开,是否全部打开,以及客户端/服务器是否将彼此视为本地 IP 或远程 IP 等)
  • 他们所在的位置是什么意思?我在我的主计算机上运行服务器程序,在另一台计算机(笔记本电脑)上运行客户端。不,我没有尝试过 WireShark,我对这个程序没有经验。

标签: c# networking tcp server client


【解决方案1】:

首先,检查以确保您的服务器正在主动侦听您期望的 TCP 端口。如果是 Windows 机器,从命令行尝试:

netstat -ano | findstr ***LISTENINGPORT***

在你的情况下,我猜你应该在 11000 上收听。

如果是这样,在客户端,让我确切地知道您的代码在哪里出错。我现在假设是这样的:

sender.Connect(new IPEndPoint(IPAddress.Parse(ip), 11000));

.. 并且还在客户端计算机上运行 WireShark 捕获。

有很多快速启动指南 - 基本上这将允许您查看客户端通过网络发出的请求,并查看服务器上是否正在建立连接(如果有)。

如果您正在建立连接,那么它只是由于其他原因而被关闭,那么您遇到了代码问题。如果不是,那么您有网络/配置问题。这应该可以帮助您取得进步。

【讨论】:

  • 是的,正在运行服务器程序的计算机正在监听 11000。看起来有连接,但我在服务器端看不到这个。当我尝试在客户端发送或接收字节时 - 程序崩溃。它在 System.Net.Sockets.Send() 处表示“现有连接被远程主机强制关闭”。同样在 Wireshark 中,我在客户端看到了一些关于源 IP 和目标 IP 的信息。
猜你喜欢
  • 1970-01-01
  • 2017-12-11
  • 1970-01-01
  • 2020-03-18
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2015-09-18
  • 1970-01-01
相关资源
最近更新 更多