Advertisement
Guest User

Socket.cpp

a guest
Feb 1st, 2011
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.59 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.data()<<" 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( const char *buf , int buflen ) {
  64.     int length=buflen;
  65.     int succeeded = 0;
  66.     int error;
  67.  
  68.     error=send( clientSocket, buf, buflen, 0 );
  69.     if (error == SOCKET_ERROR) {
  70.         CloseClient();
  71.         HandleError( WSAGetLastError(),"send" );
  72.     }
  73. };
  74.  
  75. int ServerSocket::RecvChar( char * result , int n ) {
  76.     int error = recv( clientSocket, result, n, 0 );
  77.     //std::cout<<"size:'"<<error<<"' ";
  78.     return error;
  79. };
  80.  
  81. void ClientSocket::Connect() {
  82.     int error;
  83.     error = connect( mainSocket,( LPSOCKADDR )&serverInfo,sizeof( serverInfo ) );
  84.     if ( error == SOCKET_ERROR )
  85.         HandleError( WSAGetLastError(), "connect" );
  86. };
  87.  
  88. void ClientSocket::SetServerInfo( std::string address , int port ) {
  89.     serverInfo.sin_addr.s_addr = inet_addr(address.data());
  90.     serverInfo.sin_family = AF_INET;
  91.     serverInfo.sin_port = htons( port );
  92. };
  93.  
  94. void ClientSocket::SendChar( const char *buf , int buflen ) {
  95.     int length=buflen;
  96.     int succeeded = 0;
  97.  
  98.     while( succeeded+=send( mainSocket, buf, buflen, 0 ) , succeeded!=length);
  99. };
  100.  
  101. int ClientSocket::RecvChar( char * result , int n ) {
  102.     return recv( mainSocket, result, n, 0 );
  103. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement