Advertisement
Guest User

Untitled

a guest
Nov 14th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. // TCP client
  2. #define _WINSOCK_DEPRECATED_NO_WARNINGS
  3. #include <iostream>
  4. #include <string>
  5. using namespace std;
  6.  
  7. #include <WinSock2.h>
  8. #include <WS2tcpip.h>
  9. #pragma comment (lib,"ws2_32.lib")
  10.  
  11. unsigned short constexpr PORT = 49153;
  12.  
  13. int main() {
  14.  
  15. cout << "TCPServer\n";
  16.  
  17. // initialize WSA
  18. WSAData wsaData;
  19. int iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
  20. if (iResult != 0) {
  21. cerr << "WSAStartup failed: " << iResult << endl;
  22. return EXIT_FAILURE;
  23. }
  24.  
  25.  
  26. // Create the UDP socket
  27. SOCKET hSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  28.  
  29.  
  30. // Create the server address
  31. sockaddr_in serverAddress = { 0 };
  32. serverAddress.sin_family = AF_INET;
  33. serverAddress.sin_port = htons(PORT);
  34. serverAddress.sin_addr.s_addr = inet_addr("127.0.0.1");
  35.  
  36. //bind the socket
  37. if (bind(hSocket, (SOCKADDR*)&serverAddress, sizeof(serverAddress)) == SOCKET_ERROR) {
  38. cerr << "bind() failed\n";
  39. goto close;
  40. }
  41.  
  42. cout << "TCP/IP socket bound\n";
  43.  
  44. //listen...
  45. if (listen(hSocket, 1) == SOCKET_ERROR) {
  46. cerr << "listen() failed\n";
  47. goto close;
  48. }
  49.  
  50. {
  51. cout << "Waiting for connection\n";
  52. SOCKET hAccepted = SOCKET_ERROR;
  53. while (hAccepted == SOCKET_ERROR) {
  54. hAccepted = accept(hSocket, NULL, NULL);
  55. }
  56.  
  57. cout << "Client connected\n";
  58.  
  59. char sendbuf[32] = "Goodbye";
  60. char recvbuf[32] = "";
  61.  
  62. int bytesRecv = recv(hAccepted, recvbuf, 32, 0);
  63. cout << "Recv = " << bytesRecv << ": " << recvbuf << endl;
  64. int bytesSent = send(hAccepted, sendbuf, strlen(sendbuf) + 1, 0);
  65. cout << "Sent = " << bytesSent << " bytes" << endl;
  66.  
  67. int i;
  68. bytesRecv = recv(hAccepted, reinterpret_cast<char*>(&i), sizeof(i), 0);
  69. cout << "i = " << i << endl;
  70.  
  71. cout << "Close the accepted socket\n";
  72. closesocket(hAccepted);
  73.  
  74. }
  75.  
  76. // cleanup
  77. close:
  78. closesocket(hSocket);
  79. WSACleanup();
  80.  
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement