Advertisement
Lionek1437

PSI011

Apr 3rd, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.87 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 <iostream>
  8. #include <fstream>
  9. #include <string>
  10. #include "ws2tcpip.h"
  11. using namespace std;
  12.  
  13.  
  14. #define TARGET_IP "147.32.221.22"
  15.  
  16. #define BUFFERS_LEN 1024
  17. //#define PACKET_SIZE 1016
  18.  
  19. #define SENDER
  20. #define RECEIVER
  21.  
  22. #ifdef SENDER
  23. #define TARGET_PORT 5555
  24. #define LOCAL_PORT 8888
  25. #endif // SENDER
  26.  
  27. #ifdef RECEIVER
  28. #define TARGET_PORT 8888
  29. #define LOCAL_PORT 5555
  30. #endif RECEIVER
  31.  
  32.  
  33. void InitWinsock()
  34. {
  35. WSADATA wsaData;
  36. WSAStartup(MAKEWORD(2, 2), &wsaData);
  37. }
  38.  
  39.  
  40. //**********************************************************************
  41. int main(int argc, char*argv[])
  42. {
  43. SOCKET socketS;
  44.  
  45. InitWinsock();
  46.  
  47. struct sockaddr_in local;
  48. struct sockaddr_in from;
  49.  
  50. /* unsigned int fileSize;
  51. char* stringFileSize;
  52.  
  53. FILE *pFile;
  54. if ((pFile = fopen(argv[1], "rb")) == NULL) {
  55. fprintf(stderr, "Error loading the file\n");
  56. }
  57. fseek(pFile, 0, SEEK_END);
  58. fileSize = ftell(pFile);
  59. rewind(pFile);
  60. */
  61.  
  62. /*
  63. unsigned char packetNumber = 0;
  64. unsigned int charIndex = 0;
  65. */
  66. int fileSize = 15;
  67.  
  68.  
  69. int fromlen = sizeof(from);
  70. local.sin_family = AF_INET;
  71. local.sin_port = htons(LOCAL_PORT);
  72. local.sin_addr.s_addr = INADDR_ANY;
  73.  
  74.  
  75. socketS = socket(AF_INET, SOCK_DGRAM, 0);
  76. if (bind(socketS, (sockaddr*)&local, sizeof(local)) != 0) {
  77. printf("Binding error!\n");
  78. getchar(); //wait for press Enter
  79. return 1;
  80. }
  81. //**********************************************************************
  82. char buffer_rx[BUFFERS_LEN];
  83. char buffer_tx[BUFFERS_LEN];
  84.  
  85. #ifdef SENDER
  86.  
  87. sockaddr_in addrDest;
  88. addrDest.sin_family = AF_INET;
  89. addrDest.sin_port = htons(TARGET_PORT);
  90. InetPton(AF_INET, _T(TARGET_IP), &addrDest.sin_addr.s_addr);
  91.  
  92. /* SENDING HEADER
  93. buffer[0-3] fileSize, - convert INT into 4 CHARs
  94. buffer[4-....] fname
  95. */
  96.  
  97. /*
  98. FILE *pFile;
  99. pFile = fopen(fname, "wb");
  100. */
  101.  
  102. /*
  103. while (charIndex <= fileSize){
  104. buffer_tx[0] = packetNumber++;
  105. strncpy((buffer_tx+2), pFile, PACKET_SIZE);
  106. charIndex += PACKET_SIZE
  107. }
  108. */
  109. strncpy(buffer_tx, "adsfasdf", BUFFERS_LEN); //put some data to buffer
  110. printf("Sending packet.\n");
  111. sendto(socketS, buffer_tx, strlen(buffer_tx), 0, (sockaddr*)&addrDest, sizeof(addrDest));
  112.  
  113. closesocket(socketS);
  114.  
  115. #endif // SENDER
  116.  
  117. #ifdef RECEIVER
  118.  
  119. strncpy(buffer_rx, "No data received.\n", BUFFERS_LEN);
  120. printf("Waiting for datagram ...\n");
  121. if (recvfrom(socketS, buffer_rx, sizeof(buffer_rx), 0, (sockaddr*)&from, &fromlen) == SOCKET_ERROR) {
  122. printf("Socket error!\n");
  123. getchar();
  124. return 1;
  125. }
  126. else
  127. printf("Datagram: %s", buffer_rx);
  128.  
  129. closesocket(socketS);
  130. #endif
  131. //**********************************************************************
  132.  
  133. getchar(); //wait for press Enter
  134. return 0;
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement