Advertisement
Guest User

Untitled

a guest
May 27th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.17 KB | None | 0 0
  1. #include <winsock.h>
  2. #include <iostream>
  3. #include <cstdlib>
  4. #include <cstring>
  5.  
  6. using namespace std;
  7.  
  8. int main(int argc, int **argv)
  9. {
  10. WSADATA wsda; // informacja zwrocona przez WSAStartup
  11. char szRepMessage[80]; // komunikat zwrotny
  12. int iMessageLen;
  13. int ret;
  14. char szInBuffer[128]; // bufor na otrzymany komunikat
  15. int iBufferLen;
  16. int iPort, iAddrLen;
  17.  
  18. SOCKET sListen, sClient; // gniazdo dla nasluchu oraz do klienta
  19. SOCKADDR_IN addr,remote_addr; // interfejs lokalny oraz polaczonego klienta
  20.  
  21.  
  22. // port na ktorym sie komunikujemy (0...65535)
  23. iPort = 1000;
  24.  
  25. // zaladuj WinSock w wersji 2.2
  26. WSAStartup(MAKEWORD(2,2), &wsda);
  27.  
  28. // stworzenie gniazda TCP
  29. sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
  30.  
  31. // sprawdzenie bledu
  32. if(sListen == SOCKET_ERROR)
  33. {
  34. cout << "Blad przy inicjalizacji gniazda : " << WSAGetLastError() << endl;
  35. system("PAUSE");
  36. exit(1);
  37. }
  38.  
  39. // laczenie gniazda z adresem/portem
  40. addr.sin_family = AF_INET;
  41. addr.sin_port = htons(iPort);
  42. addr.sin_addr.s_addr = htonl(INADDR_ANY);
  43. ret = bind(sListen, (struct sockaddr *) &addr, sizeof(addr));
  44.  
  45. // sprawdzenie bledu
  46. if(ret == SOCKET_ERROR)
  47. {
  48. cout << "Blad przy wiazaniu gniazda : " << WSAGetLastError() << endl;
  49. system("PAUSE");
  50. exit(1);
  51. }
  52.  
  53. // ustaw tryb nasluchu
  54. ret = listen(sListen, 10);
  55.  
  56. // sprawdzenie bledu
  57. if(ret == SOCKET_ERROR)
  58. {
  59. cout << "Blad przy trybie nasluchu : " << WSAGetLastError() << endl;
  60. system("PAUSE");
  61. exit(1);
  62. }
  63.  
  64. // oczekiwanie na polaczenie
  65. cout << "Oczekiwanie na polaczenie (nacisnij CTRL-C zeby przerwac)..." << endl;
  66. iAddrLen = sizeof(remote_addr);
  67. sClient = accept(sListen, (struct sockaddr *) &remote_addr, &iAddrLen);
  68.  
  69. // sprawdzenie bledu
  70. if(sClient == SOCKET_ERROR)
  71. {
  72. cout << "Blad przy nawiazywaniu polaczenia : " << WSAGetLastError() << endl;
  73. system("PAUSE");
  74. exit(1);
  75. }
  76.  
  77. cout << "Polaczono z hostem " << inet_ntoa(remote_addr.sin_addr) << endl;
  78.  
  79. // odbior komunikatu
  80. cout << "Oczekiwanie na odpowiedz..." << endl;
  81. ret = recv(sClient, szInBuffer, sizeof(szInBuffer), 0);
  82.  
  83. // sprawdzenie bledu
  84. if(ret == SOCKET_ERROR)
  85. {
  86. cout << "Blad przy odbiorze komunikatu " << WSAGetLastError() << endl;
  87. system("PAUSE");
  88. exit(1);
  89. }
  90.  
  91. // wyswietlenie komunikatu od klienta
  92. iBufferLen = ret;
  93. szInBuffer[iBufferLen] = '\0';
  94. cout << "Otrzymano komunikat o tresci \"" << szInBuffer << "\"" << endl;
  95.  
  96. // wczytanie i wyslanie komunikatu zwrotnego
  97. cout << "Wpisz komunikat zwrotny...";
  98. cin.getline(szRepMessage,80,'\n');
  99. iMessageLen = strlen(szRepMessage);
  100. ret = send(sClient, szRepMessage, iMessageLen, 0);
  101.  
  102. // sprawdzenie bledu
  103. if(ret == SOCKET_ERROR)
  104. {
  105. cout << "Blad przy wysylaniu komunikatu zwrotnego : " << WSAGetLastError() << endl;
  106. system("PAUSE");
  107. exit(1);
  108. }
  109.  
  110. // zamkniecie gniazda
  111. closesocket(sClient);
  112.  
  113. // zamkniecie WinSock
  114. WSACleanup();
  115.  
  116. system("PAUSE");
  117.  
  118. return 0;
  119.  
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement