Advertisement
d1cor

sock_unix-client1.c

Oct 4th, 2017
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.69 KB | None | 0 0
  1. /*******************************************
  2. * Author     : Diego Cordoba / @d1cor      *
  3. * Purpose    : Junco TIC                   *
  4. * Contact    : juncotic.com                *
  5. *******************************************/
  6.  
  7. #include<stdio.h>
  8. #include<stdlib.h>
  9. #include<sys/types.h>
  10. #include<sys/stat.h>
  11. #include<unistd.h>
  12. #include<string.h>
  13. #include<fcntl.h>
  14. #include<errno.h>
  15. #include<sys/socket.h>
  16. #include<sys/un.h>
  17.  
  18. #define MSG_SIZE 128
  19. #define SOCK_PATH "/tmp/socket1"
  20.  
  21. //emisor
  22.  
  23. int main(int argc, char** argv) {
  24.  
  25.     char *error;
  26.     int sockid;     //id del socket
  27.     struct sockaddr_un direccion;
  28.     char mensaje[MSG_SIZE] = "hola mundo";
  29.  
  30.     if((sockid=socket(PF_UNIX,SOCK_DGRAM,0))<0){
  31.         error="socket";
  32.         goto err;
  33.     }
  34.     /*
  35.        int socket(int domain, int type, int protocol);
  36.         domain: familia de protocolo (PF_)
  37.         type: tipo de socket (DGRAM o STREAM)
  38.         protocol: 0 (unix es un archivo)
  39.  
  40.     */
  41.  
  42.     //cargamos la direccion:
  43.     direccion.sun_family=AF_UNIX;
  44.     strcpy(direccion.sun_path,SOCK_PATH);
  45.  
  46.     //enviamos datos al socket:
  47.     if((sendto(sockid,*(argv+1),strlen(*(argv+1)),0,(struct sockaddr *)&direccion,sizeof(direccion)))<0){
  48.         error="sendto";
  49.         goto err;
  50.     }
  51.  
  52.     printf("Enviado...\n");
  53.  
  54.     /*
  55.     ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen);
  56.         sockfd      socket id o file-descriptor del socket Unix
  57.         buf         buffer donde esta el mensaje
  58.         len         longitud del mensaje a enviar
  59.         flags       flags, 0 por default
  60.         dest_addr   direccion del destinatario
  61.         addrlen     long de la direccion
  62.     */
  63.  
  64.     close(sockid);
  65.     return 0;
  66.  
  67. err:
  68.     fprintf(stderr,"%s %d %s\n",error,errno,strerror(errno));
  69.     exit(1);
  70.  
  71.     return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement