Advertisement
Lionek1437

PSI ukol 1

Mar 27th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. // UDP_Communication_Framework.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #pragma comment(lib, "ws2_32.lib")
  5. #include "stdafx.h"
  6. #include <winsock2.h>
  7. #include "ws2tcpip.h"
  8.  
  9. #define TARGET_IP "147.32.221.14"
  10.  
  11. #define BUFFERS_LEN 1024
  12.  
  13. #define SENDER
  14. //#define RECEIVER
  15.  
  16. #ifdef SENDER
  17. #define TARGET_PORT 5555
  18. #define LOCAL_PORT 8888
  19. #endif // SENDER
  20.  
  21. #ifdef RECEIVER
  22. #define TARGET_PORT 8888
  23. #define LOCAL_PORT 5555
  24. #endif // RECEIVER
  25.  
  26.  
  27. void InitWinsock()
  28. {
  29. WSADATA wsaData;
  30. WSAStartup(MAKEWORD(2, 2), &wsaData);
  31. }
  32.  
  33. //**********************************************************************
  34. int main()
  35. {
  36. SOCKET socketS;
  37.  
  38. InitWinsock();
  39.  
  40. struct sockaddr_in local;
  41. struct sockaddr_in from;
  42.  
  43. int fromlen = sizeof(from);
  44. local.sin_family = AF_INET;
  45. local.sin_port = htons(LOCAL_PORT);
  46. local.sin_addr.s_addr = INADDR_ANY;
  47.  
  48.  
  49. socketS = socket(AF_INET, SOCK_DGRAM, 0);
  50. if (bind(socketS, (sockaddr*)&local, sizeof(local)) != 0) {
  51. printf("Binding error!\n");
  52. getchar(); //wait for press Enter
  53. return 1;
  54. }
  55. //**********************************************************************
  56. char buffer_rx[BUFFERS_LEN];
  57. char buffer_tx[BUFFERS_LEN];
  58.  
  59. #ifdef SENDER
  60.  
  61. sockaddr_in addrDest;
  62. addrDest.sin_family = AF_INET;
  63. addrDest.sin_port = htons(TARGET_PORT);
  64. InetPton(AF_INET, _T(TARGET_IP), &addrDest.sin_addr.s_addr);
  65.  
  66.  
  67. strncpy(buffer_tx, "Hello world payload!\n", BUFFERS_LEN); //put some data to buffer
  68. printf("Sending packet.\n");
  69. sendto(socketS, buffer_tx, strlen(buffer_tx), 0, (sockaddr*)&addrDest, sizeof(addrDest));
  70.  
  71. closesocket(socketS);
  72.  
  73. #endif // SENDER
  74.  
  75. #ifdef RECEIVER
  76.  
  77. strncpy(buffer_rx, "No data received.\n", BUFFERS_LEN);
  78. printf("Waiting for datagram ...\n");
  79. if (recvfrom(socketS, buffer_rx, sizeof(buffer_rx), 0, (sockaddr*)&from, &fromlen) == SOCKET_ERROR) {
  80. printf("Socket error!\n");
  81. getchar();
  82. return 1;
  83. }
  84. else
  85. printf("Datagram: %s", buffer_rx);
  86.  
  87. closesocket(socketS);
  88. #endif
  89. //**********************************************************************
  90.  
  91. getchar(); //wait for press Enter
  92. return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement