执行C套接字程序时已在使用的地址

时间:2011-02-07 10:48:44

标签: c sockets gcc

Hii All,
          运行套接字程序(服务器端)时会收到类似

的消息

地址已在使用

我尝试连接到端口80,因为端口80是为https应用程序保留的所以在运行服务器端程序之前,我正在关闭所有使用https应用程序的应用程序,这是否足够...... 或者我做错了?

我试图在浏览器和终端之间进行通信......

2 个答案:

答案 0 :(得分:1)

您必须以Linux上的超级用户(root)或Windows上的管理员权限运行您的应用程序才能绑定到端口80.所有服务端口都是这种情况,< 1024.无论是那还是还有另一个绑定到该端口的程序。

尝试使用netstat找出端口80上可能正在侦听的程序。

示例:

Linux上的

netstat -punta
Windows上的

netstat -ban

两者都必须以超级用户/管理员权限运行才能查看绑定到特定端口的程序名称。

答案 1 :(得分:0)

如果您刚刚关闭另一个正在侦听80端口的进程,则该端口将被阻止一段时间,具体取决于您的操作系统。此行为是为了防止攻击者在您的计算机上崩溃服务并立即重新启动同一端口上的恶意服务。

可以使用SO_REUSEADDR(使用setsockopt)禁用此行为。

如果您的主要问题是从自定义服务器与broswer通信,您可以使用服务器中的任何端口提供HTTP(8080是常见的),只需在URL http://server:port/中指定端口(即。http://localhost:8080/