gpt4 book ai didi

c - 将服务器套接字绑定(bind)到端口失败 (C)

转载 作者:太空宇宙 更新时间:2023-11-04 02:43:50 24 4
gpt4 key购买 nike

我的代码总是会出现“绑定(bind)失败”错误,我不知道为什么。我已经多次阅读手册页,但我找不到代码有任何问题,有人可以引导我朝着正确的方向前进吗?

    #include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#define PORT 3490
#define BACKLOG 10

int main()
{
struct sockaddr_in server;
struct sockaddr_in dest;
int status,socket_fd, client_fd,num;
socklen_t size;

char buffer[10241];
char *buff;
// memset(buffer,0,sizeof(buffer));
int yes =1;



if ((socket_fd = socket(AF_INET, SOCK_STREAM, 0))== -1) {
fprintf(stderr, "Socket failure!!\n");
exit(1);
}

if (setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) == -1) {
perror("setsockopt");
exit(1);
}
memset(&server, 0, sizeof(server));
memset(&dest,0,sizeof(dest));
server.sin_family = AF_INET;
server.sin_port = htons(PORT);
server.sin_addr.s_addr = INADDR_ANY;
if ((bind(socket_fd, (struct sockaddr *)&server, sizeof(struct sockaddr )))== -1) { //sizeof(struct sockaddr)
fprintf(stderr, "Binding Failure\n");


exit(1);
//other irrelevant code starts here

最佳答案

如果 netstat -an|grep 3490 确实显示 127.0.0.1,则您有另一个进程在端口监听,绑定(bind)到 127.0.0.1 而不是 INADDR_ANY,这就是 SO_REUSEADDR 不起作用的原因。但是,除非你接受我上面的建议,否则你将永远无法确定。

关于c - 将服务器套接字绑定(bind)到端口失败 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29313246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com