这可能有点难以简单列举,但我会尽我所能对新手理解域和问题。Unix域套接字(C) - 客户端“删除”connect()上的套接字?
我有2个进程,一个首先解除链接的流服务器,创建一个套接字描述符,绑定,侦听并接受本地unix套接字。服务器的工作是接受连接,发送任意数据,并接收任意数据。除了初始设置之外,客户端进程的工作与服务器一样;创建套接字描述符,并连接到unix套接字。
启动服务器后,我可以验证正在创建的unix套接字。在启动客户端时,我收到一个connect()错误,指出文件或目录不存在或无效。是的,试图找到unix插槽像以前一样,该文件不再存在...
有没有人知道为什么或在哪里的错误可能导致这种行为?
如果代码片段有助于澄清,我当然可以发布这些。
struct addrinfo * server;
int sockfd;
sockfd = socket(server->ai_family, server->ai_socktype, server->ai_protocol);
if(connect(sockfd, server->ai_addr, server->ai_addrlen) == 0)
return sockfd;
else
perror("connect()");
这可能也是值得注意的,我使用的getaddrinfo的修改版本,专门填充Unix域的addrinfo中结构。
连接设置的代码应该有所帮助。 – twain249 2012-04-10 13:52:45
你是如何设置'server struct'的?你还使用什么端口和IP地址? – twain249 2012-04-10 14:05:15
'addrinfo struct'由修改后的getaddrinfo(“\ local”,“\ tmp \ socket”,提示和服务器)API处理,以处理unix域套接字。 – 5k1zk17 2012-04-10 14:23:04