Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    312

    SOCKET C - problemi con la accept

    Come scritto nel titolo del post, non riesco a far funzionare la accept. Alla fine ho fatto un'esempio elementare per capire il mio errore ma sono alle solite. Il piccolissimo codice è il seguente:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <netdb.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    
    int main(){
    int ds_sock, ds_sock_acc;
    struct sockaddr_in my_addr;
    struct sockaddr addr;
    int addrlen;
    ds_sock = socket(AF_INET,SOCK_STREAM,0);
    my_addr.sin_family = AF_INET;
    my_addr.sin_port = 1999;
    my_addr.sin_addr.s_addr = INADDR_ANY;
    bind(ds_sock,&my_addr,sizeof(my_addr));
    ds_sock_acc = accept(ds_sock,&addr,&addrlen);
    if(ds_sock_acc == -1)
    perror("errore: ");
    close(ds_sock);
    close(ds_sock_acc);
    
    }
    La perror dopo la accept mi stampa "invalid argument" ma a me sembrano corretti.

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    312
    Ho rivisitato il codice dell'accept,senza successo, come segue:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <errno.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <sys/wait.h>
    #include <signal.h>
    
    int main(){
    int ds_sock, ds_sock_acc;
    struct sockaddr_in my_addr;//informazioni sul mio
    struct sockaddr_in addr;//informazioni su chi si connette
    //socklen_t addrlen = sizeof addr;
    ds_sock = socket(AF_INET,SOCK_STREAM,0);
    
    my_addr.sin_family = AF_INET;
    my_addr.sin_port = 1999;
    my_addr.sin_addr.s_addr = INADDR_ANY;
    int a = sizeof(my_addr);
    bind(ds_sock,(struct sockaddr *)&my_addr,sizeof my_addr);
    ds_sock_acc = accept(ds_sock,(struct sockaddr*)&addr,&a);
    if(ds_sock_acc == -1)
    perror("errore: ");
    close(ds_sock);
    close(ds_sock_acc);
    
    }
    C'è qualcuno che gentilmente potrebbe fare un copia ed incolla per provarlo sulla sua distribuzione linux per vedere se da il mio stesso errore? Non capisco proprio cosa ci sia di sbagliato

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.