socket unix
unix本地的socket,会产生sock文件root@ubuntu:~/test# cat testserver.c #include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/socket.h>#include <unistd.h>#include <sys/un.h>int main(){ int server_sockfd,client_sockfd; int server_len,client_len; struct sockaddr_un server_address; struct sockaddr_un client_address; unlink("server_socket"); server_sockfd=socket(AF_UNIX,SOCK_STREAM,0); server_address.sun_family=AF_UNIX; strcpy(server_address.sun_path,"server_socket"); server_len=sizeof(server_address); bind(server_sockfd,(struct sockaddr *)&server_address,server_len); listen(server_sockfd,5); while(1){ char ch; printf("server waiting\n"); client_len=sizeof(client_address); client_sockfd=accept(server_sockfd,(struct sockaddr *)&server_address,server_len); read(client_sockfd,&ch,1); ch++; write(client_sockfd,&ch,1); close(client_sockfd); }}root@ubuntu:~/test#
ls -lF server_socket
root@ubuntu:~/test# cat testclient.c #include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#include <sys/types.h>#include <unistd.h>#include <sys/un.h>int main(){ int sockfd; struct sockaddr_un address; int len; int result; char ch='A'; sockfd=socket(AF_UNIX,SOCK_STREAM,0); address.sun_family=AF_UNIX; strcpy(address.sun_path,"server_socket"); len=sizeof(address); result=connect(sockfd,(struct sockaddr *) &address,len); if(result==-1){ perror("oops:client1"); exit(1); } write(sockfd,&ch,1); read(sockfd,&ch,1); printf("char from sever=%c\n",ch); close(sockfd); exit(0);}root@ubuntu:~/test#
页:
[1]