Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.58 KB | None | 0 0
  1. #include "Socket.h"
  2.  
  3. Socket::Socket() {
  4.     WSAStartup( MAKEWORD( 1 , 1 ) , &wsaData );
  5. };
  6.  
  7. Socket::~Socket() {
  8.     WSACleanup();
  9. };
  10.  
  11. void Socket::Start() {
  12.     mainSocket = socket( AF_INET , SOCK_STREAM , IPPROTO_TCP );
  13.  
  14.     if ( mainSocket == INVALID_SOCKET )
  15.         HandleError( WSAGetLastError(), "open" );
  16. };
  17.  
  18. void Socket::Stop() {
  19.     closesocket( mainSocket );
  20. };
  21.  
  22.  
  23.  
  24. void Socket::HandleError( int errorCode, std::string errorMessage ) {
  25.     std::cerr<<"Error: "<<errorMessage<<" code: "<<errorCode<<"\n";
  26.     WSACleanup();
  27. };
  28.  
  29.  
  30.  
  31.  
  32. void ServerSocket::Initialize() {};
  33.  
  34. void ServerSocket::Bind( int port ) {
  35.     int error;
  36.  
  37.     serverInfo.sin_family = AF_INET;
  38.     serverInfo.sin_addr.s_addr = INADDR_ANY;
  39.     serverInfo.sin_port = htons( port );
  40.  
  41.     error = bind( mainSocket, ( LPSOCKADDR )&serverInfo, sizeof( struct sockaddr ) );
  42.     if ( error == SOCKET_ERROR )
  43.         HandleError( WSAGetLastError(), "bind" );
  44. };
  45.  
  46. void ServerSocket::Listen() {
  47.     int error;
  48.     error = listen( mainSocket, 10 ); //10 ez egy ilyen socket que
  49.     if ( error == SOCKET_ERROR )
  50.         HandleError( WSAGetLastError(), "listen" );
  51. };
  52.  
  53. void ServerSocket::AcceptClient() {
  54.     clientSocket = accept( mainSocket , NULL , NULL );  // Address of a sockaddr structure (see explanation below) , address of a variable containing size of sockaddr struct
  55.     if ( clientSocket == INVALID_SOCKET )
  56.         HandleError( WSAGetLastError(), "accept-connection" );
  57. };
  58.  
  59. void ServerSocket::CloseClient() {
  60.     closesocket( clientSocket );
  61. };
  62.  
  63. void ServerSocket::SendChar( char *buf , int buflen ) {
  64.     int error;
  65.  
  66.     error=send( clientSocket, buf, buflen, 0 );
  67.     if (error == SOCKET_ERROR) {
  68.         CloseClient();
  69.         HandleError( WSAGetLastError(),"send" );
  70.     }
  71. };
  72.  
  73. int ServerSocket::RecvChar( char * result , int n ) {
  74.     return recv( clientSocket, result, n, 0 );
  75. };
  76.  
  77. void ClientSocket::Connect() {
  78.     int error;
  79.     error = connect( mainSocket,( LPSOCKADDR )&serverInfo,sizeof( serverInfo ) );
  80.     if ( error == SOCKET_ERROR )
  81.         HandleError( WSAGetLastError(), "connect" );
  82. };
  83.  
  84. void ClientSocket::SetServerInfo( std::string address , int port ) {
  85.     char address_char[address.size()];
  86.     for(int i=0; i<address.size(); i++) {
  87.         address_char[i] = address[i];
  88.     }
  89.  
  90.     serverInfo.sin_addr.s_addr = inet_addr(address_char);
  91.     serverInfo.sin_family = AF_INET;
  92.     serverInfo.sin_port = htons( port );
  93. };
  94.  
  95. void ClientSocket::SendChar( char *buf , int buflen ) {
  96.     int length=buflen;
  97.     int succeeded = 0;
  98.  
  99.     while( succeeded+=send( mainSocket, buf, buflen, 0 ) , succeeded!=length);
  100. };
  101.  
  102. int ClientSocket::RecvChar( char * result , int n ) {
  103.     return recv( mainSocket, result, n, 0 );
  104. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement