Linux套接字(AF_UNIX)连接()失败

时间:2016-08-11 08:51:12

标签: c linux sockets

这个部分周我一直在学习unix套接字,我有一个关于来自客户端应用程序的connect()调用的数据。

connect()函数是否调用BLOCKING。是否会阻塞,直到服务器应用程序创建自己的套接字,将其绑定到同一地址并开始侦听传入连接?

在我的客户中,我所拥有的是

printf(" abc %s\n", bind_path);
if((retval = connect(sh->sock_fd, (const struct sockaddr*)&sadr, sizeof(struct sockaddr_un))) == -1)
{
      perror("123");
      return SOCKET_ERROR;
}
return SOCKET_OK;

我得到的是,

ankit@ankit-ThinkPad-W530:~/Desktop/week2_3_tasks/ipc_socket_exercise$ ./user_application_proc2_client.out 
**** Process 2 (Client) Started
**** Process 2 PID : 7106
/tmp/sock_10 
**** Socket connected successfully with handle 3
 abc /tmp/sock_10
123: No such file or directory
**** Error connnecting socket to address .. exiting

1 个答案:

答案 0 :(得分:2)

  

connect()函数是否调用BLOCKING [?]

不适用于UNIX套接字。它可能会阻塞其他类型的套接字(例如IP套接字)。

  

它会阻塞直到服务器应用程序创建自己的套接字,将它绑定到同一个地址并开始侦听传入的连接吗?

没有。你自己看到了 - 你有一个“没有这样的文件或目录”错误!显然,它在返回错误之前没有等待服务器。