首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >socket_bind():无法绑定地址

socket_bind():无法绑定地址
EN

Stack Overflow用户
提问于 2014-06-14 20:27:09
回答 3查看 7.8K关注 0票数 3

我已经看到这个问题至少被问了十几次。没有一个回复对我有帮助。

代码:

代码语言:javascript
复制
$host = "127.0.0.1";
$port = 80;

//no timeout
set_time_limit(0);

//create socket
$socket=socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");


if (!socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1)) {
    echo socket_strerror(socket_last_error($socket));
    exit;
}

$result = socket_bind($socket, $host, $port) or die("Could not bind socket\n");

添加“if”语句是因为一个响应建议将其放入其中。似乎对我没什么帮助。我打算把它拿出来。不管怎样,我的错误是:

警告: socket_bind():无法绑定地址10013:试图以访问权限禁止的方式访问套接字。

是的,我知道这意味着端口正在被另一个进程使用。我大约更改了30次端口号。我暂时关闭了(Windows 8)防火墙。我运行netstat,我看到这些端口没有关闭,所以我有大约30个具有相同PID和名称的套接字。

所以,我的问题是:我做错了什么?

EN

回答 3

Stack Overflow用户

发布于 2014-06-14 21:59:28

要绑定到低于1024的端口,该进程需要特权权限。通常只有root才能做到这一点。

有关此主题的更详细讨论,请阅读此处:Is there a way for non-root processes to bind to "privileged" ports on Linux?

票数 1
EN

Stack Overflow用户

发布于 2014-06-15 02:41:51

感谢那些回复的人,但我自己解决了这个问题。我使用的教程是导航到server.php文件。别笑,我是通过浏览器浏览的。所以,这条消息就会在我的浏览器上弹出来。

我在命令提示符中运行了相同的文件,我要么得到该错误,要么看起来它挂在那里,这取决于我选择的端口。它并没有坠毁。它就是没有什么可输出的。我给了它一些输出的东西(耶!!)。

不管怎样,再次感谢你。

票数 1
EN

Stack Overflow用户

发布于 2015-02-27 06:12:52

大多数情况下,出现此错误的原因是您正在尝试使用的套接字已被另一个程序使用。您正在尝试打开套接字以侦听端口80,apache正在侦听哪个端口?如果它也是端口80,那就有问题了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24219910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档