Advertisement
Guest User

Unix Local Socket

a guest
Jul 3rd, 2013
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.31 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <sys/socket.h>
  5. #include <sys/types.h>
  6. #include <sys/un.h>
  7. #include <unistd.h>
  8. #include <errno.h>
  9.  
  10. #define MAXLEN  128
  11.  
  12. int main (int argc, char *argv[]){
  13.    
  14.     struct sockaddr_un  server;
  15.     int                 serverfd, clientfd;
  16.     socklen_t           addrsize = sizeof(struct sockaddr_un);
  17.     char                buff[MAXLEN], *path;
  18.    
  19.     if (argc < 2){
  20.         printf("Error: %s [MESSAGE]\n", argv[0]);
  21.         return 1;
  22.     }
  23.    
  24.     if ((serverfd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0){
  25.         printf("Error \"%s\" in socket()\n", strerror(errno));
  26.         exit(1);
  27.     }
  28.     puts("socket()");
  29.    
  30.     server.sun_family = AF_UNIX;
  31.     path = strcpy(server.sun_path, "/home/myhome/Dropbox/Sources/C/sub");
  32.    
  33.     printf("[DEBUG]Address bound at %s\n", path);
  34.    
  35.     if ((bind(serverfd, (struct sockaddr*)&server, addrsize)) < 0){
  36.         printf("Error \"%s\" in bind()\n", strerror(errno));
  37.         exit(1);
  38.     }
  39.     puts("bind()");
  40.  
  41.  
  42.     if ((listen(serverfd, 1)) < 0){
  43.         printf("Error \"%s\" in listen()\n", strerror(errno));
  44.         exit(1);
  45.     }
  46.    
  47.     if ((clientfd = accept(serverfd, NULL, &addrsize)) < 0){
  48.         printf("Error \"%s\" in accept()\n", strerror(errno));
  49.         exit(1);
  50.     }
  51.    
  52.     write(clientfd, argv[1], strlen(argv[1]));
  53.     read(clientfd, buff, sizeof(buff));
  54.    
  55.     puts(buff);
  56.    
  57.     close(clientfd);
  58.     close(serverfd);
  59.     return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement