Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [c] connessiore client server

    ciao

    avrei un problema

    ho un client che si connette a due server con due indirizzi ip diversi come faccio a fargli cambiare la connessione

    potreste indicarmi le socket e connect dove vanno messe


    inoltre

    quando faccio partire il client scrivo su riga di comando i due indirizzi ip

    ./client 127.0.0.1 127.0.0.2 è corretto cominciare così per connettersi?

  2. #2
    Non l'ho mai fatto, ma non si potrebbe fare semplicemnte una connect al primo server, poi chiudi questa cossenssione e poi risetti la struttura sockaddr_in al nuovo server e ti connetti nuovamente con connect a questo!!!

    spero di aver capito il problema... Pero se posti un po di codice e ci dici il sistema operativo che usi dai una mano a tutti ad aiutarti!!

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Io sinceramente non ho capito nulla del problema ..
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    allora

    client riceve da shell due ip di due server

    nel programma client devo usare due socket e due connect o ne basta una cambiando solo l'ip?

    nel server devo fare socket bind liste accept oppure ne devo fare due per ogni ip?

    poi quando faccio partire l'eseguibile io scrivo

    ./client 127.0.0.1 127.0.0.2 è corretto cominciare così per connettersi?

    nel server metto
    mio_indirizzo.sin_family = AF_INET;
    mio_indirizzo.sin_port=htons(5203);
    mio_indirizzo.sin_addr.s_addr=htonl(INADDR_ANY);

    nel client metto
    indirizzo.sin_family =AF_INET ;
    indirizzo.sin_port=htons(5203);
    inet_aton(argv[1],&indirizzo.sin_addr);

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Se non hai necessita' particolari, puoi connetterti prima ad un server e, dopo che ti sei disconnesso dal primo, ti connetti al secondo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Già che ci sei ti fai una funzione che accetta un ip in input e si connette a quell'ip.
    Così aggiungi un livello d'astrazione maggiore ed è più facile passare da una connessione all'atra.
    Qualcosa tipo:
    codice:
    int client_connect(const char *ip, unsigned int port){
    
       /*Setta il socket*/
      /*Si connette se è connesso ritorna 1 se no 0*/
    
    }

  7. #7
    Un esempio del codice protebbe essere questo :

    codice:
    int sock; 
    strcut sockaddr_in serv_addr; 
    
    sock = socket(AF_INET, SOCK_STREAM, 0);  // creo il socket; 
    
    memset((void *)&serv_addr, 0, sizeof( struct sockaddr_in)); 
    serv_addr.sin_port = htons(n_porta); 
    serv_addr.sin_family = AF_INET; 
    
    // assegno il primo indirizzo, questa funzione e presente solo in linux credo
       inet_pton(AF_INET, argv[1], &serv_addr.sin_addr); 
    
    // prima connessione 
    connect(sock, ( struct sockaddr *)&sock_addr, sizeof(sock_addr)); 
    
    // qui fai tutto sul primo socket; 
    
    close(sock); 
    
    // inizio nuova connessione 
    
    
    sock = socket(AF_INET, SOCK_STREAM, 0);  // creo il socket; 
    
    // azzero la struttura 
    
    memset((void *)&serv_addr, 0, sizeof( struct sockaddr_in)); 
    
    serv_addr.sin_port = htons(n_porta); 
    serv_addr.sin_family = AF_INET; 
    
    
    // assegno il secondo  indirizzo, questa funzione e presente solo in linux (dal tuo nick parliamo la stessa lingua)  credo
       inet_pton(AF_INET, argv[2], &serv_addr.sin_addr); 
    
    seconda connessione 
    connect(sock, ( struct sockaddr *)&sock_addr, sizeof(sock_addr)); 
    
    close(sock);

    Spero di aver capito il problema, e di essere stato di aiuto ciao!!!!!

  8. #8
    allora
    client riceve da shell due ip di due server
    nel programma client devo usare due socket e due connect o ne basta una cambiando solo l'ip?
    Due socket differenti, e connect() per ognuno.

    nel server devo fare socket bind liste accept oppure ne devo fare due per ogni ip?
    Se le interfacce su cui vuoi ascoltare sono due (ovvero hai due indirizzi IP) devi fare due bind.
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.