Advertisement
Guest User

Untitled

a guest
Jun 12th, 2022
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 KB | None | 0 0
  1. //// Два консольных приложения
  2.  
  3. //// Клиент, отправляющий сообщение серверу
  4.  
  5. #include <WS2tcpip.h>
  6. #include <WinSock2.h>
  7. #include <QDebug>
  8.  
  9. #pragma comment(lib, "Ws2_32.lib")
  10.  
  11. const char* ip_address = "227.0.0.1";
  12. unsigned int port = 100;
  13.  
  14. int main()
  15. {
  16. WSAData data;
  17. int ret = WSAStartup(MAKEWORD(2, 2), &data);
  18. if (ret != 0)
  19. qDebug() << "Error WSAStartup" << WSAGetLastError();
  20.  
  21. SOCKET sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
  22. if (sock == INVALID_SOCKET)
  23. qDebug() << "Error opening socket" << WSAGetLastError();
  24.  
  25. sockaddr_in add;
  26. add.sin_family = AF_INET;
  27. add.sin_addr.s_addr = inet_addr(ip_address);
  28. add.sin_port = htons(port);
  29.  
  30. const char* str = "hello world";
  31. ret = sendto(sock, str, sizeof(str), 0,
  32. reinterpret_cast<SOCKADDR *>(&add), sizeof(add));
  33. if (ret < 0)
  34. qDebug() << "sendto failed" << WSAGetLastError();
  35. }
  36.  
  37.  
  38. //// Сервер, получает сообщение. У меня работает только qmake версия. Клиент не важно как собирать
  39.  
  40. #include <WS2tcpip.h>
  41. #include <WinSock2.h>
  42. #include <QDebug>
  43.  
  44. #pragma comment(lib, "Ws2_32.lib")
  45.  
  46. const char* ip_address = "227.0.0.1";
  47. unsigned int port = 100;
  48.  
  49. int main()
  50. {
  51. WSAData data;
  52. int ret = WSAStartup(MAKEWORD(2, 2), &data);
  53. if (ret != 0)
  54. qDebug() << "Error opening socket" << WSAGetLastError();
  55.  
  56. SOCKET sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
  57. if (sock == INVALID_SOCKET)
  58. qDebug() << "Error opening socket" << WSAGetLastError();
  59.  
  60. sockaddr_in add;
  61. add.sin_family = AF_INET;
  62. add.sin_addr.s_addr = htonl(INADDR_ANY);
  63. add.sin_port = htons(port);
  64.  
  65. ret = bind(sock, reinterpret_cast<SOCKADDR*>(&add), sizeof(add));
  66. if (ret < 0)
  67. qDebug() << "Bind failed" << ret << WSAGetLastError();
  68.  
  69. ip_mreq mreq;
  70. mreq.imr_multiaddr.s_addr = inet_addr(ip_address);
  71. setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char*)&mreq, sizeof(mreq));
  72.  
  73. char buffer[100];
  74. qDebug() << "recieved:" << recv(sock, buffer, sizeof(buffer), 0);
  75.  
  76. if (ret < 0)
  77. qDebug() << "recvfrom failed" << WSAGetLastError();
  78. }
  79.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement