我在我的网站上实现套接字并将套接字绑定到网站的IP地址但是当我在该端口上telnet网站时,它没有连接。正在创建套接字并且网站正在侦听传入连接,没有错误但是在尝试telnet网站时显示错误。如果我更改代码以便在127.0.0.1
上收听,则无问题。
该网站正在侦听端口6662
,这是一个非官方的IRC端口。什么没发生?
我执行以下操作来远程登录网站。
telnet www.nameofwebsite.com 6662
telnet ipofwebsite 6662
它尝试连接然后失败并显示错误:无法打开与主机的连接,在端口6662上:连接失败
结束脚本很简单。
<?php
set_time_limit(0);
error_reporting(E_NOTICE);
$address = "ipofwebsite"; // if i change this to 127.0.0.1 and telnet localhost 6662, it works.
$port = 6662;
# root socket
$root = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
# reuse socket
if( socket_set_option($root, SOL_SOCKET, SO_REUSEADDR, 1) == false )
{
echo socket_strerror(socket_last_error());
}
# bind socket
if( socket_bind($root, $address, $port) === false )
{
echo socket_strerror(socket_last_error());
}
# listen on the socket
if( socket_listen($root) === false )
{
echo socket_strerror(socket_last_error());
}
# accept a connection
if( ( $client = socket_accept($root) ) === false )
{
echo socket_strerror(socket_last_error());
}
echo "Connection accepted<br />";
socket_close($root);
?>
它一直在听,但不接受任何telnet连接。
答案 0 :(得分:0)
如果您的服务器是Windows服务器,请尝试以下操作:https://www.tomshardware.com/news/how-to-open-firewall-ports-in-windows-10,36451.html.
如果您的系统是Linux,请尝试运行以下命令:
iptables -I INPUT -p tcp -m tcp --dport your_port_number -j ACCEPT
service iptables save
如果是CentOS 7,则可以运行以下命令
firewall-cmd --zone=public --add-port=your_port_number /tcp --permanent
firewall-cmd --reload