2024年2月9日发(作者:)

return 1;

}

//listen sockfd

ret=listen(listen_fd,1);

if(ret==-1)

{

perror("cannot listen the client connect request");

close(listen_fd);

unlink(UNIX_DOMAIN);

return 1;

}

//have connect request use accept

len=sizeof(clt_addr);

com_fd=accept(listen_fd,(struct sockaddr*)&clt_addr,&len);

if(com_fd<0)

{

perror("cannot accept client connect request");

close(listen_fd);

unlink(UNIX_DOMAIN);

return 1;

}

//read and printf sent client info

printf("/n=====info=====/n");

for(i=0;i<4;i++)

{

memset(recv_buf,0,1024);

int num=read(com_fd,recv_buf,sizeof(recv_buf));

printf("Message from client (%d)) :%s/n",num,recv_buf);

}

close(com_fd);

close(listen_fd);

unlink(UNIX_DOMAIN);

return 0;

}

客户端://c_unix.c#include #include #include #include #define UNIX_DOMAIN "/tmp/"int main(void){ int connect_fd; int ret; char snd_buf[1024]; int i; static struct sockaddr_un srv_addr;//creat unix socket connect_fd=socket(PF_UNIX,SOCK_STREAM,0); if(connect_fd<0) { perror("cannot create communication socket"); return 1; }

srv__family=AF_UNIX; strcpy(srv__path,UNIX_DOMAIN);//connect server ret=connect(connect_fd,(struct sockaddr*)&srv_addr,sizeof(srv_addr)); if(ret==-1) { perror("cannot connect to the server"); close(connect_fd); return 1; } memset(snd_buf,0,1024); strcpy(snd_buf,"message from client");//send info server for(i=0;i<4;i++) write(connect_fd,snd_buf,sizeof(snd_buf)); close(connect_fd); return 0;}