小编Tek*_*ros的帖子

接受套接字函数超时

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

感谢您的回答。

下面是我的代码:

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) …
Run Code Online (Sandbox Code Playgroud)

c unix sockets

7
推荐指数
1
解决办法
3万
查看次数

标签 统计

c ×1

sockets ×1

unix ×1