gpt4 book ai didi

c - 接受套接字函数超时

转载 作者:行者123 更新时间:2023-12-03 11:49:30 25 4
gpt4 key购买 nike

我试图在接受套接字函数上设置超时但没有成功。我希望接受功能 block 直到超时延迟结束。
是否可以不将接受功能设置为非阻塞?
我尝试了很多可能性,但都没有成功。

感谢您的回答。

下面是我的代码:

struct timeval tv;
fd_set readfds;

tv.tv_sec = 1;
tv.tv_usec = 0;

int s, s_remote;
struct sockaddr_un remote;
struct sockaddr_un local;

if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) {
perror("socket");
exit(1);
}

FD_ZERO(&readfds);
FD_SET(s, &readfds);

if (select(s+1, &readfds, NULL, NULL, &tv) > 0) {

printf("Waiting for a connection...\n");

memset(&local, 0, sizeof(local));
local.sun_family = AF_UNIX;
strcpy(local.sun_path, SOCK_PATH);
unlink(local.sun_path);

if (bind(s, (struct sockaddr *)&local, sizeof(local)) == -1) {
perror("UnixSocketClient :: error bind.\n");
close(s);
return -1;
}

if (listen(s, 5) == -1) {
perror("UnixSocketClient :: error listen.\n");
close(s);
return -1;
}

socklen_t remote_len = sizeof(remote);
printf("Accept :\n\r");

if ((s_remote = accept(s, (struct sockaddr *)&remote, &remote_len)) == -1) {
perror("UnixSocket :: error accept.\n");
return -1;
}
printf("Client accepted\n\r");
}

最佳答案

你的代码没有意义。您必须调用:

  • 套接字()
  • 绑定(bind)()
  • 听()
  • 选择()
  • 接受()

  • 以该顺序。

    关于c - 接受套接字函数超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35206781/

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