Advertisement
peterzig

[PWŚS] PACKET_INITIALIZE

Mar 20th, 2017
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.31 KB | None | 0 0
  1. #pragma comment(lib,"Ws2_32.lib");
  2. #include <windows.h>
  3. #include <string>
  4. #include <iostream>
  5.  
  6. using namespace std;
  7.  
  8. struct PACKET_INITIALIZE
  9. {
  10.     PACKET_INITIALIZE(unsigned int code, int reserved1, int reserved2) :
  11.         Code(code),
  12.         Reserved1(reserved1),
  13.         Reserved2(reserved2) {}
  14.         unsigned int Code;
  15.         int Reserved1;
  16.         int Reserved2;
  17. };
  18.  
  19. struct PACKET_TEXTFRAGMENT
  20. {
  21.     PACKET_TEXTFRAGMENT(unsigned int code, unsigned int textlen, signed int charoffset) :
  22.         Code(code),
  23.         TextLen(textlen),
  24.         CharOffset(charoffset) {}
  25.         unsigned int Code;
  26.         unsigned int TextLen;
  27.         signed int CharOffset;
  28. };
  29.  
  30. int main()
  31. {
  32.     WSADATA info;
  33.     if (WSAStartup(MAKEWORD(2, 0), &info) != 0)
  34.     {
  35.         cout << "WinSock Error\n";
  36.     }
  37.  
  38.     SOCKET gniazdo = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  39.  
  40.     sockaddr_in serwer;
  41.     serwer.sin_family = AF_INET;
  42.     serwer.sin_addr.s_addr = inet_addr("192.168.0.46");
  43.     serwer.sin_port = htons(5000);
  44.  
  45.     connect(gniazdo, (sockaddr*)&serwer, sizeof(serwer));
  46.  
  47.     //-------- cala zabawa zaczyna sie tutaj
  48.     PACKET_INITIALIZE start(0x12345678, 0, 0);
  49.     PACKET_TEXTFRAGMENT msg(0x23456789, 0, 0);
  50.     string buf;
  51.     char odebrana[100];
  52.     int liczba;
  53.     int odebrane;
  54.  
  55.     send(gniazdo, (char*)&start, sizeof(start), 0);
  56.     recv(gniazdo, (char*)&start, sizeof(start), 0);
  57.  
  58.     if (start.Code == 1)
  59.     {
  60.         do
  61.         {
  62.             cout << "Podaj tekst do szyfrowania/deszyfrowania : ";
  63.             getline(cin, buf);             
  64.             if (buf == "") break;
  65.             do
  66.             {
  67.                 cout << "Wprowadz przesuniecie <-20,20> : ";
  68.                 cin >> liczba;                  getchar();
  69.             } while ((liczba<-20) || (liczba>20));
  70.  
  71.             msg.Code = 0x23456789;
  72.             msg.TextLen = buf.length();
  73.             msg.CharOffset = liczba;
  74.  
  75.             send(gniazdo, (char*)&msg, sizeof(msg), 0);
  76.             send(gniazdo, buf.c_str(), buf.length(), 0);
  77.  
  78.             recv(gniazdo, (char*)&msg, sizeof(msg), 0);
  79.             if (msg.Code == 1)
  80.             {
  81.                 odebrane = recv(gniazdo, odebrana, buf.length(), 0);
  82.                 odebrana[odebrane] = 0;
  83.                 cout << "Otrzymana odpowiedz: " << odebrane << endl;
  84.             }
  85.             else cout << "Brak odpowiedzi" << endl;
  86.             cout << "--------------------------------------------------------------";
  87.         } while (true);
  88.     }
  89.     else cout << "Serwer nie wyrazil zgody na polaczenie!\n";
  90.  
  91.     //-------- tutaj sie konczy, reszta to klasyk
  92.     shutdown(gniazdo, 2);   closesocket(gniazdo);
  93.     WSACleanup();
  94.  
  95.     return 0;
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement