Advertisement
Guest User

start

a guest
Jul 18th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.93 KB | None | 0 0
  1. void start_connection_server(){
  2. enum stts status;
  3. struct sockaddr_in addr;
  4. int addrlen, sock, cnt;
  5. struct ip_mreq mreq;
  6. char message[193];
  7. char server_name[20] = "Unul dintre servere";
  8. int port_tcp = htons(6001); //transforma portul din int pe 16 biti in cod specific de retea,unsigned short or an uint16_t equal to 2 bytes or 16 bits.
  9.  
  10. message[193] = "";
  11. memcpy(message, server_name, 20);
  12. memcpy(&message[20], &port_tcp, sizeof(port_tcp));
  13.  
  14. sock = socket(AF_INET, SOCK_DGRAM, 0);
  15. if (sock < 0) {
  16. perror("socket");
  17. exit(1);
  18. }
  19. bzero((char *) &addr, sizeof(addr));
  20. addr.sin_family = AF_INET;
  21. addr.sin_addr.s_addr = htonl(INADDR_ANY); //The htonl() function converts the unsigned integer hostlong from host byte order to network byte order.
  22. addr.sin_port = htons(EXAMPLE_PORT);
  23. addrlen = sizeof(addr);
  24.  
  25. pthread_create(&start_tcp_server, NULL, &MyThread, NULL);
  26.  
  27. if (argc <= 1) {
  28.  
  29. /* receive */
  30. if (bind(sock, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
  31. perror("bind");
  32. exit(1);
  33. }
  34. mreq.imr_multiaddr.s_addr = inet_addr(EXAMPLE_GROUP);
  35. mreq.imr_interface.s_addr = htonl(INADDR_ANY);
  36. if (setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq)) //
  37. < 0) {
  38. perror("setsockopt mreq");
  39. exit(1);
  40. }
  41. int l = 0;
  42. while (1) {
  43. cnt = recvfrom(sock, message, sizeof(message), 0,
  44. (struct sockaddr *) &addr, &addrlen);
  45.  
  46. if (cnt < 0) {
  47. perror("recvfrom");
  48. exit(1);
  49. } else if (cnt == 0) {
  50. break;
  51. }
  52. memcpy(message, server_name, 20);
  53. memcpy(&message[20], &port_tcp, sizeof(port_tcp));
  54.  
  55. // Start the server
  56.  
  57. cnt = sendto(sock, message, sizeof(message), 0,
  58. (struct sockaddr *) &addr, addrlen);
  59.  
  60. if (cnt < 0) {
  61. perror("sendto");
  62. exit(1);
  63. }
  64. printf("%s: message = \" %d \n", inet_ntoa(addr.sin_addr), message);
  65. l++;
  66. }
  67. }
  68. return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement