Server Socket



  • Hallo Leute!
    Ich versuche eine Server zu erstellen welcher auf eine Client antworten soll. Ich bekomme jedoch fehler bei listen, bind und der accept Funktion. Ich kenne mich nicht gut damit aus und hoffe, dass jemand mein Fehler findet.
    Hier ist mein Code:

    #include <windows.h>
    #include <iostream>
    #include <winsock.h>
    #include <sys/types.h>
    
    #pragma comment( lib, "Ws2_32.lib" )
    
    using namespace std;
    
    int main( int arg, char* arvg[ ] )
    {
        WSADATA wsaData;
        SOCKET RecvSocket;
    	SOCKET connectedSocket;
    
    	int BufLen = 1024;
    	char RecvBuf[ 1024 ];
    	char SendBuffer[ 1024 ];
    
    	WSAStartup( MAKEWORD( 2, 0 ), &wsaData );
    
        sockaddr_in RecvAddr;
    	//sockaddr_in clientService;
    	unsigned short Port = 2011;
    
    	RecvSocket = socket( AF_INET, SOCK_DGRAM, IPPROTO_IP );
    	if( RecvSocket == INVALID_SOCKET )
    	{
    		cout << "Socket failed! Error Code: " << WSAGetLastError( ) << endl;
    	}
    
    	memset( &RecvAddr, 0, sizeof( SOCKADDR_IN ) );
    	RecvAddr.sin_family = AF_INET;
        RecvAddr.sin_port = htons( Port );
    	RecvAddr.sin_addr.s_addr = inet_addr( "127.0.0.1" );
    
    	if ( connect( RecvSocket, ( SOCKADDR* )&RecvAddr, sizeof( RecvAddr ) ) == -1 )
    	{
    		cout << "Connection failed! Error Code: " << WSAGetLastError( ) << endl;
    	}
    
    	if ( bind( RecvSocket, ( SOCKADDR* )&RecvAddr, sizeof( RecvAddr ) ) == SOCKET_ERROR )
    	{
    		cout << "Bind failed! Error Code: " << WSAGetLastError( ) << endl;
    	}
    
    	if ( listen( RecvSocket, 10 ) == SOCKET_ERROR )
    	{
    		cout << "Listen failed! Error Code: " << WSAGetLastError( ) << endl;
    	}
    
    	connectedSocket = accept( RecvSocket, NULL, NULL );
    
    	if ( connectedSocket == INVALID_SOCKET )
    	{
    		cout << "Accept failed! Error Code: " << WSAGetLastError( ) << endl;
    	}
    
    	strcpy( SendBuffer, "Test" );
    
    	/*while( TRUE )
    	{
    		recvfrom( RecvSocket, RecvBuf, BufLen, NULL, ( SOCKADDR* )&RecvAddr, ( int * )&RecvAddr );
    		cout << "Shit bekommen: " << RecvBuf << endl;
    		for ( int i = 0; i < 16; i++ )
    		{
    			cout << RecvBuf[ i ];
    		}
    		cout << endl;
    		//int res = sendto( RecvSocket, SendBuffer, BufLen, NULL, ( SOCKADDR* )& RecvAddr, sizeof( RecvAddr ) );
    	}*/
    
        closesocket( RecvSocket );
    
        WSACleanup( );
    	return NULL;
    }
    

    MfG BlauBär



  • Dann machst du wohl was falsch. Lies dir diesen Link mal durch, vielleicht findest du da Hilfe.



  • Falsches Forum erwischt? Das ist reiner C-Code, bis auf cout.



  • Das könnte helfen:

    #define WIN32_LEAN_AND_MEAN
    

    Es verhindert Konflikte zwischen der ersten und zweiten Version von WinSock.


Anmelden zum Antworten