Advertisement
QenBau

client.c

Aug 2nd, 2021
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.56 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <unistd.h>
  4. #include "utils.h"
  5. #include "conn.h"
  6. //Librerie per i socket:
  7. #include <sys/socket.h>
  8. #include <sys/un.h>
  9.  
  10. #define DIM_BUFFER 256
  11.  
  12.  
  13. int main()
  14. {
  15. int fdSkt;
  16. //Creazione socket - si usano (quasi) sempre questi parametri
  17. RETURN_SYSCALL(fdSkt, socket(AF_UNIX, SOCK_STREAM, 0), "Errore creazione socket - fdSkt")
  18.  
  19.  
  20. //Connect
  21. //sckAddr deve essere uguale a quello del server
  22. struct sockaddr_un sckAddr;
  23. strncpy(sckAddr.sun_path, SOCKNAME, 108);
  24. sckAddr.sun_family = AF_UNIX;
  25.  
  26. //il socket potrebbe non aver ancora fatto la listen (per via dello scheduler)
  27. //il prof nelle correzioni mette solamente: SYSCALL(connect(fdSkt, (struct sockaddr *) &sckAddr, sizeof(sckAddr)), "")
  28. while(connect(fdSkt, (struct sockaddr *) &sckAddr, sizeof(sckAddr)) == -1)
  29. {
  30. if(errno != ENOENT)
  31. {
  32. perror("Errore connect - fdSkt");
  33. exit(EXIT_FAILURE);
  34. }
  35. }
  36.  
  37. while (1)
  38. {
  39. char buffer[DIM_BUFFER];
  40. memset(buffer, '\0', DIM_BUFFER);
  41. SCANF_STRINGA(buffer);
  42.  
  43. if(strncmp(buffer, "quit", strlen("quit")) == 0)
  44. break;
  45.  
  46. int lenghtBuffer = strlen(buffer)+1;
  47. SYSCALL(writen(fdSkt, buffer, lenghtBuffer), "Errore: writen(fdSkt, buffer, strlen(buffer)+1)")
  48. SYSCALL(readn(fdSkt, buffer, lenghtBuffer), "Errore: writen(fdSkt, buffer, strlen(buffer)+1)")
  49. printf("%s\n", buffer);
  50.  
  51. }
  52.  
  53. SYSCALL(close(fdSkt), "Errore close - fdSkt")
  54.  
  55. return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement