Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    148

    Programmazione Socket

    Salve devo fare un programma in C di un client che mandi ad un server due numeri e il server gli restutuisca la somma dei due numeri.In numeri devo essere in binario pure (operandi e risultato su 16 bit in Network Order). il client deve inviare al server 4 byte:
    primi 2: primo numero;
    secondi 2: secondo numero.
    Il server restituisce tre byte il primo contiene lo stato (esito dell'operazione: 0 o 1), e gli altri due il risulato della somma.

    Sapreste indicarmi una soluzione per la parte che riguarda l'invio dei due operandi in poi??? Devo usare le funzione host to network giusto? Il problema è che non riesco...
    Grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Che tipo di soluzione cerchi? Codice pronto o una indicazione?

    Ovviamente, come hai messo nel titolo, devi usare i socket (windows? linux?) e le funzioni relative ma non vedo come ti possa servire a chiarirti le idee ...

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    Moderazione

    Ricorda che il linguaggio va aggiunto anche nel titolo della discussione.

    Lo aggiungo io.



    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    148

    Re: Programmazione Socket

    Originariamente inviato da andry85
    Salve devo fare un programma in C di un client che mandi ad un server due numeri e il server gli restutuisca la somma dei due numeri.In numeri devo essere in binario pure (operandi e risultato su 16 bit in Network Order). il client deve inviare al server 4 byte:
    primi 2: primo numero;
    secondi 2: secondo numero.
    Il server restituisce tre byte il primo contiene lo stato (esito dell'operazione: 0 o 1), e gli altri due il risulato della somma.

    Sapreste indicarmi una soluzione per la parte che riguarda l'invio dei due operandi in poi??? Devo usare le funzione host to network giusto? Il problema è che non riesco...
    Grazie
    Innanzitutto Linux. Poi, come ho scritto sopra, se qualcuno può scrivermi il pezzo di codice (il server è già fatto devo fare solo il client ) che vai dall'inserimento degli operandi fino alla scrittura del risultato che arriva dal server.
    Grazie.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462

    Re: Re: Programmazione Socket

    Originariamente inviato da andry85
    Poi, come ho scritto sopra,
    Ma dove l'avevi scritto?

    se qualcuno può scrivermi il pezzo di codice (il server è già fatto devo fare solo il client ) che vai dall'inserimento degli operandi fino alla scrittura del risultato che arriva dal server.
    Mi dispiace ma proprio non ho tempo per scrivere codice pronto per l'uso ... magari correggere o integrarne uno che mostri e non ti funziona, si puo' fare ...

    E poi, dato che hai il server, perche' non prendi spunto da quello per tentare di scrivere il client? Un po' di impegno non guasterebbe ...

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    148

    Re: Re: Re: Programmazione Socket

    Originariamente inviato da oregon
    Ma dove l'avevi scritto?



    Mi dispiace ma proprio non ho tempo per scrivere codice pronto per l'uso ... magari correggere o integrarne uno che mostri e non ti funziona, si puo' fare ...

    E poi, dato che hai il server, perche' non prendi spunto da quello per tentare di scrivere il client? Un po' di impegno non guasterebbe ...

    Guarda che non sono venuto su questo forum per farmi dare la pappa pronta. Il server è un file .exe quindi non ho il file c. E' due giorni che provo a fare questo programma e non riesco, considerando il fatto che è il mio programma che riguarda i socket. Cmq adesso vi metto il pezzo di programma che non funziona così magari qualcuno puà aiutarmi.


    char buf[MAXBUFL+1],res[MAXBUFL+1],res1[MAXBUFL+1];
    unsigned int n1,n2,r1,r2;
    uint16_t n1n,n2n,r2r,r1r;

    Readline(0,buf,sizeof(buf)); // leggo i due numeri da stdin e metto nel buffer buf
    sscanf(buf,"%d %d", &n1,&n2); // estraggo i due numeri dal buffer buf
    n1n=htons(n1); // li converto in formato di rete
    n2n=htons(n2);
    sprintf(buf,"%d %d",n1n,n2n); // li metto nel buf
    Writen (sockfd, buf, 4); // scrivo sul socket i 4 byte(primo e secondo num.)
    Readn(sockfd,res,3); // leggo dal socket i 3 byte che mi invia il server e metto in res


    sscanf(res,"%d %d", &r1,&r2); //Estraggo i due numeri
    r1r=ntohs(r1); // è lo stato dell'operazione
    r2r=ntohs(r2); // è il risultato, li converto in formato di host
    sprintf(res1,"%d %d\r\n",r1r,2r); // metto nel buffer res1
    Writen (1, res1, 3); // stampo su stdout
    Close(sockfd);


    Lo stile di programmazione non è un granchè però vi ripeto sono all'inizio. Spero sia tutto chiaro.Grazie.

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.