peterzig

[PWŚS] TCP Client

Apr 26th, 2017
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.17 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <winsock2.h>
  3. #include <conio.h>
  4.  
  5. #pragma comment(lib, "ws2_32.lib")
  6.  
  7. #define DEFAULT_BUFLEN 1024
  8.  
  9. bool close = false;
  10.  
  11. DWORD WINAPI MyThread( LPVOID lpParam )
  12. {
  13.     SOCKET *socket =(SOCKET*)lpParam;
  14.     char buff[DEFAULT_BUFLEN];
  15.     while(recv(*socket, buff, DEFAULT_BUFLEN, 0) > 0)
  16.     {
  17.         printf("%s\n", buff);
  18.     }  
  19.     close = true;
  20.     return 0;
  21. }
  22.  
  23. int _tmain(int argc, _TCHAR* argv[])
  24. {  
  25.     WSADATA wsaData;
  26.     int iResult;
  27.     SOCKET Socket;
  28.     struct sockaddr_in clientService;    
  29.     char buff[DEFAULT_BUFLEN];
  30.     int bufflen = DEFAULT_BUFLEN;
  31.     iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
  32.     if (iResult != NO_ERROR)
  33.     {
  34.         printf("WSAStartup failed: %d\n", iResult);
  35.         _getch();
  36.         return 1;
  37.     }
  38.     Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  39.    
  40.     //u_long iMode = 1;
  41.     //ioctlsocket(Socket, FIONBIO, &iMode);
  42.    
  43.     if (Socket == INVALID_SOCKET)
  44.     {
  45.         printf("Error at socket(): %ld\n", WSAGetLastError() );
  46.         WSACleanup();
  47.         _getch();
  48.         return 1;
  49.     }
  50.     clientService.sin_family = AF_INET;
  51. //  clientService.sin_addr.s_addr = inet_addr( "157.158.41.86" );
  52. //    clientService.sin_addr.s_addr = inet_addr( "157.158.41.18" );
  53.     clientService.sin_addr.s_addr = inet_addr( "127.0.0.1" );
  54.     printf("Connect to: %s\n", inet_ntoa(clientService.sin_addr));
  55.  
  56.     clientService.sin_port = htons( 27015 );
  57.     iResult = connect( Socket, (SOCKADDR*) &clientService, sizeof(clientService) );
  58.     if ( iResult == SOCKET_ERROR)
  59.     {
  60.         closesocket (Socket);
  61.         printf("Unable to connect to server: %ld\n", WSAGetLastError());
  62.         WSACleanup();
  63.         _getch();
  64.         return 1;
  65.     }  
  66.     DWORD ThreadId;
  67.     CloseHandle(CreateThread( NULL, 0, MyThread, (void*)&Socket, 0, &ThreadId));
  68.     while(true)
  69.     {      
  70.         gets(buff);
  71.         if(strcmp(buff, "exit")==0 || close) break;
  72.         send(Socket, buff, strlen(buff) + 1, 0);       
  73.     }      
  74.     iResult = shutdown(Socket, SD_SEND);
  75.     if (iResult == SOCKET_ERROR) {
  76.         printf("shutdown failed: %d\n", WSAGetLastError());
  77.         closesocket(Socket);
  78.         WSACleanup();
  79.         _getch();    
  80.         return 1;
  81.     }
  82.     closesocket(Socket);
  83.     WSACleanup();      
  84.     return 0;
  85. }
Add Comment
Please, Sign In to add comment