Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Socket.h"
- Socket::Socket() {
- WSAStartup( MAKEWORD( 1 , 1 ) , &wsaData );
- };
- Socket::~Socket() {
- WSACleanup();
- };
- void Socket::Start() {
- mainSocket = socket( AF_INET , SOCK_STREAM , IPPROTO_TCP );
- if ( mainSocket == INVALID_SOCKET )
- HandleError( WSAGetLastError(), "open" );
- };
- void Socket::Stop() {
- closesocket( mainSocket );
- };
- void Socket::HandleError( int errorCode, std::string errorMessage ) {
- std::cerr<<"Error: "<<errorMessage.data()<<" code: "<<errorCode<<"\n";
- WSACleanup();
- };
- void ServerSocket::Initialize() {};
- void ServerSocket::Bind( int port ) {
- int error;
- serverInfo.sin_family = AF_INET;
- serverInfo.sin_addr.s_addr = INADDR_ANY;
- serverInfo.sin_port = htons( port );
- error = bind( mainSocket, ( LPSOCKADDR )&serverInfo, sizeof( struct sockaddr ) );
- if ( error == SOCKET_ERROR )
- HandleError( WSAGetLastError(), "bind" );
- };
- void ServerSocket::Listen() {
- int error;
- error = listen( mainSocket, 10 ); //10 ez egy ilyen socket que
- if ( error == SOCKET_ERROR )
- HandleError( WSAGetLastError(), "listen" );
- };
- void ServerSocket::AcceptClient() {
- clientSocket = accept( mainSocket , NULL , NULL ); // Address of a sockaddr structure (see explanation below) , address of a variable containing size of sockaddr struct
- if ( clientSocket == INVALID_SOCKET )
- HandleError( WSAGetLastError(), "accept-connection" );
- };
- void ServerSocket::CloseClient() {
- closesocket( clientSocket );
- };
- void ServerSocket::SendChar( const char *buf , int buflen ) {
- int length=buflen;
- int succeeded = 0;
- int error;
- error=send( clientSocket, buf, buflen, 0 );
- if (error == SOCKET_ERROR) {
- CloseClient();
- HandleError( WSAGetLastError(),"send" );
- }
- };
- int ServerSocket::RecvChar( char * result , int n ) {
- int error = recv( clientSocket, result, n, 0 );
- //std::cout<<"size:'"<<error<<"' ";
- return error;
- };
- void ClientSocket::Connect() {
- int error;
- error = connect( mainSocket,( LPSOCKADDR )&serverInfo,sizeof( serverInfo ) );
- if ( error == SOCKET_ERROR )
- HandleError( WSAGetLastError(), "connect" );
- };
- void ClientSocket::SetServerInfo( std::string address , int port ) {
- serverInfo.sin_addr.s_addr = inet_addr(address.data());
- serverInfo.sin_family = AF_INET;
- serverInfo.sin_port = htons( port );
- };
- void ClientSocket::SendChar( const char *buf , int buflen ) {
- int length=buflen;
- int succeeded = 0;
- while( succeeded+=send( mainSocket, buf, buflen, 0 ) , succeeded!=length);
- };
- int ClientSocket::RecvChar( char * result , int n ) {
- return recv( mainSocket, result, n, 0 );
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement