我正在尝试使用另一个客户端用 C 语言编写服务器程序,例如,当我尝试通过端口 2080 连接时出现此错误。
connection refused
此错误的原因可能是什么?
我正在尝试使用另一个客户端用 C 语言编写服务器程序,例如,当我尝试通过端口 2080 连接时出现此错误。
connection refused
此错误的原因可能是什么?
可能有很多原因,但最常见的是:
目标计算机上的端口未打开。
该端口在目标计算机上是打开的,但其待处理连接的积压已满。
客户端和服务器之间的防火墙阻止访问(同时检查本地防火墙)。
检查防火墙并确保端口打开后,使用 telnet 连接到 ip/port 以测试连接性。这会消除您的应用程序中的任何潜在问题。
该错误意味着侦听套接字的操作系统识别出入站连接请求,但选择故意拒绝它。
假设中间防火墙没有妨碍,操作系统拒绝入站连接请求只有两个原因(据我所知)。一个原因已经多次提到过——连接的监听端口没有打开。
还有一个尚未提及的原因 - 侦听端口实际上是打开的并且正在被积极使用,但是其排队的入站连接请求的积压已达到最大值,因此没有空间可供入站连接请求在该处排队片刻。服务器代码调用accept() 的次数还不够多,还没有完成为新队列项清除可用槽。
稍等片刻,然后再次尝试连接。不幸的是,没有办法区分“端口根本未打开”和“端口已打开但现在太忙”。它们都使用相同的通用错误代码。
如果您尝试打开与另一台主机的 TCP 连接并看到错误“连接被拒绝”,这意味着
RST 是 TCP 数据包上的一个位,表示应该重置连接。通常这意味着其他主机已收到您的连接尝试并正在积极拒绝您的 TCP 连接,但有时中间的防火墙可能会阻止您的 TCP SYN 数据包并将 TCP RST 发送回您。
参见https://www.rfc-editor.org/rfc/rfc793第 69 页:
同步接收状态
如果设置了 RST 位
如果这个连接是用一个被动的 OPEN 发起的(即,来自 LISTEN 状态),那么把这个连接返回到 LISTEN 状态并返回。无需通知用户。如果这个连接是通过一个活动的 OPEN 启动的(即来自 SYN-SENT 状态),那么连接被拒绝,向用户发出“连接被拒绝”的信号。在任何一种情况下,重传队列上的所有段都应该被删除。并且在主动OPEN的情况下,进入CLOSED状态并删除TCB,然后返回。
连接被拒绝意味着您尝试连接的端口实际上并未打开。
因此,要么您连接到错误的 IP 地址,要么连接到错误的端口,要么服务器正在侦听错误的端口,或者实际上并没有运行。
一个常见的错误是在以网络字节顺序绑定或连接时未指定端口号...
在服务器端检查它是否正在侦听端口 2080。首先尝试通过向该端口发出 telnet 在服务器计算机上确认它:
远程登录本地主机 2080
如果它在听,它能够响应。
1.检查您的服务器状态。
2.检查端口状态。
例如 3306 netstat -nupl|grep 3306
。
3.检查您的防火墙。例如添加 3306
vim /etc/sysconfig/iptables
# add
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
尽管您的情况似乎并非如此,但有时连接被拒绝错误也可能表明您的网络上存在 IP 地址冲突。您可以通过运行搜索可能的 ip 冲突:
arp-scan -I eth0 -l | grep <ipaddress>
和
arping <ipaddress>
这个AskUbuntu 问题也有更多信息。
我的工作电脑也遇到同样的问题。问题是,当您输入 localhost 时,它会转到代理的地址而不是本地地址,您应该按照以下步骤绕过它
Chrome => 设置 => 更改代理设置 => LAN 设置 => 检查绕过代理服务器以获取本地地址。
从检查点防火墙的角度来看,如果您实际选择拒绝作为操作,您将看到来自防火墙的消息,从而向潜在的攻击者暴露服务器前面存在防火墙。防火墙将静默丢弃所有与策略不匹配的连接。拒绝连接几乎总是来自服务器
在 Ubuntu 中,尝试
sudo ufw allow <port_number>
允许防火墙访问您的服务器和数据库。
在我的情况下,当网站在我的国家被阻止并且我不使用 VPN 时,就会发生这种情况。例如,当我尝试从被阻止的印度尼西亚访问 vimeo.com 时。
我收到了同样的信息,但原因完全不同:wsock32.dll
找不到。该::socket(PF_INET, SOCK_STREAM, 0);
调用一直返回 anINVALID_SOCKET
但原因是未加载winsock dll。
最后,我启动了 Sysinternals 的进程监视器,发现它“到处”搜索 dll,但没有找到。
无声的失败是伟大的!