haoningabc 发表于 2013-1-26 12:28:27

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]
查看完整版本: socket unix