Linux监听或绑定(bind)80端口失败


写了一个程序,尝试在80端口监听,结果在执行bind的时候失败了。
程序是这样的:

 

 sockaddr_in sock_addr;
 memset(&sock_addr, 0, sizeof(sock_addr));
 sock_addr.sin_family = AF_INET;
 sock_addr.sin_addr.s_addr = host_inet_addr;
 sock_addr.sin_port = htons(m_local_port);   //m_local_port=80
 ret = bind( m_socket_fd, (const sockaddr*)&sock_addr, sizeof(sockaddr_in));


ret是-1.
然后将m_local_port改成8080成功了。突然想起来,系统不允许用户程序在1-1024端口监听,因为他们是知名端口。
那么怎么样才可以在知名端口监听呢?显然我的机器上没有再80端口运行的程序,所以一定有办法,莫非是我的程序级别不够。
于是使用su,换成root用户,结果成功bind.

记录一下。

 

相关内容

    暂无相关文章