kostenloser Webspace werbefrei: lima-city


server accept() fail

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    seiten

    seiten hat kostenlosen Webspace.

    hey guys ;D

    Leider lässt sich mein in c++ codierter kleiner "Server" lässt sich nicht mittels g++ compilern (oder wie das auch heißt?) ...
    Als Fehlermeldung bringt g++:
    no@no-tower:/media/E8E3-5598$ g++ server.cpp -o server
    server.cpp: In function ‘int main(int, char**)’:
    server.cpp:46:55: error: invalid conversion from ‘int*’ to ‘socklen_t*’
    server.cpp:46:55: error: initializing argument 3 of ‘int accept(int, sockaddr*, socklen_t*)’

    Hier noch der Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netdb.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <unistd.h>
    #include <cstring>
    #include <cstdlib>
    
    #define BUFFER_SIZE 1024
    
    
    int main(int argc, char *argv[])
    {
    	int sock, cli_size;
    	struct sockaddr_in my_addr, cli;
    
    	if (sock = socket(AF_INET, SOCK_STREAM, 0) == -1)
    	{
    		perror("socket() failed");
    		exit (EXIT_FAILURE);
    	}
    	
    	my_addr.sin_family = AF_INET;
    	my_addr.sin_port = htons(222);
    	my_addr.sin_addr.s_addr = INADDR_ANY;
    	
    	if (bind(sock, (struct sockaddr*)&my_addr, sizeof(my_addr)) == -1)
    	{
    		perror("bind() failed");
    		exit (EXIT_FAILURE);
    	}
    	
    	if (listen(sock, 3) == -1)
    	{
    		perror("listen() failed");
    		exit (EXIT_FAILURE);
    	}
    	
    	for(;;)
    	{
    		cli_size = sizeof(cli);
    
    		if (accept(sock, (struct sockaddr *) &cli, &cli_size) == -1) // line 46
    		{
    			perror("accept() failed");
    			exit (EXIT_FAILURE);
    		}
    		
    		printf("client from %s", inet_ntoa(cli.sin_addr));
    	}
    
    	return 0;
    }


    Wenn jemand eine Idee hat, was das ein könnte bitte melden,
    danke im vor raus,
    YoSEF

    Beitrag zuletzt geändert: 16.8.2011 12:48:17 von seiten
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Falls du es noch nicht hast:

    du hast "cli_size" als int deklariert und du versuchst es der Funktion bei Zeile 46 zu übergeben.
    Die Funktion erwartet aber als letzten Parameter eine "socklen_t*"-Variable.

    Falls es geht, schau in die accept-Funktion mal rein oder ändere deine "cli_size"-Variable.

    Hoffentlich konnte ich dir helfen.

    Viel Erfolg mit deinem Mini-Server ;-)

    Beitrag zuletzt geändert: 16.8.2011 14:29:05 von jakarta
  4. Ansonsten die letzten beiden Parameter von accept mit NULL aufrufen, falls du die Infos vom Client nicht benötigst ..
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!