c - unix中绑定(bind)端口 "Address already in use"TCP套接字编程错误

标签 c sockets unix tcp

我浏览了很多帖子和论坛,而且我是套接字编程的新手。我的代码的主要部分类似于 BIND ERROR : Address already in use

但后来我更改了我的代码,以便我像这样包含“setsockopt”函数:

const char* port="5555";
int opt=1;
portno=atoi(port);
//parameters for server address
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(portno);
serv_addr.sin_addr.s_addr=INADDR_ANY;
//bind the socket to the address
setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,(const char *)&opt,sizeof(int));


 if(bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0)
{close(sockfd);
error("error in binding port!");
}

但我仍然得到错误。我必须关闭终端并重新启动它才能再次使用该端口。我想使用硬编码端口(就像我在上面的代码中提到的那样)

                                                            Thanks a lot in advance

最佳答案

检查端口是否被占用。 telnet 到该端口或使用 netstat -a。它应该正在使用中(如错误所示)并终止相应的进程。也许使用 ps 来查找进程。

关于c - unix中绑定(bind)端口 "Address already in use"TCP套接字编程错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9207781/

相关文章:

bash - 管道回显时抑制输出到 StdOut

c - Unix TCP 端口扫描器

c - memset 设置字符指针 NULL/Garbage

java - 客户端不从套接字读取数据?

c++ - QT中如何通过套接字传输较大的对象?

python - 如何在 python 中编写查找和执行命令

c - 在 C 编程中验证整数

有人能告诉我我的错误在哪里吗?我的程序给出了错误的输出

c - 我不明白为什么我们将 "&"放在 ageAmis 的 scanf 中,而 ageAmis 是一个指针?

regex - 如何使用 sed 将一个文件中的模式替换为另一个文件的内容?