test_client.c 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <sys/socket.h>
  5. #include <sys/un.h>
  6. #include <sys/types.h>
  7. static const char* socket_path = "/tmp/slivevr.sock";
  8. static const unsigned int s_recv_len = 200;
  9. static const unsigned int s_send_len = 100;
  10. int main()
  11. {
  12. int sock = 0;
  13. int data_len = 0;
  14. struct sockaddr_un remote;
  15. char recv_msg[s_recv_len];
  16. char send_msg[s_send_len];
  17. memset(recv_msg, 0, s_recv_len*sizeof(char));
  18. memset(send_msg, 0, s_send_len*sizeof(char));
  19. if( (sock = socket(AF_UNIX, SOCK_STREAM, 0)) == -1 )
  20. {
  21. printf("Client: Error on socket() call \n");
  22. return 1;
  23. }
  24. remote.sun_family = AF_UNIX;
  25. strcpy( remote.sun_path, socket_path );
  26. data_len = strlen(remote.sun_path) + sizeof(remote.sun_family);
  27. printf("Client: Trying to connect... \n");
  28. if( connect(sock, (struct sockaddr*)&remote, data_len) == -1 )
  29. {
  30. printf("Client: Error on connect call \n");
  31. return 1;
  32. }
  33. printf("Client: Connected \n");
  34. while(1)
  35. {
  36. memset(send_msg, 0, s_send_len*sizeof(char));
  37. memset(recv_msg, 0, s_recv_len*sizeof(char));
  38. if( (data_len = recv(sock, recv_msg, s_recv_len, 0)) > 0 )
  39. {
  40. printf("Client: Data received: %s \n", recv_msg);
  41. }
  42. else
  43. {
  44. if(data_len < 0)
  45. {
  46. printf("Client: Error on recv() call \n");
  47. }
  48. else
  49. {
  50. printf("Client: Server socket closed \n");
  51. close(sock);
  52. break;
  53. }
  54. }
  55. }
  56. printf("Client: bye! \n");
  57. return 0;
  58. }