Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    305

    [c++]winsock multitread errore

    avvio il server
    avvio il client

    nel server nel while sotto

    while(1)
    {
    incoming = accept(listening, NULL, NULL);
    //al primo passaggio la riga sopra è ok
    if (incoming != SOCKET_ERROR){
    //in questo if non entra
    //dal client come invio la stringa ciao si entra in questo if
    //quindi fa tutto quello che deve fare
    //come ricomincia il while(1) mi dà un eccezione dopo
    incoming = accept(listening, NULL, NULL);

    non riesco a capire cosa possa essere....!!!!!!!
    Oki.lib Libreria per creare il proprio Engine del sound nei propri progetti
    http://www.twork.it/public/oki/guestbook.asp

    Sistemi di Gestione Studio e Sviluppo per giochi a pronostici
    http://www.twork.it/programmi/programmi.html

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E' difficile intuire quale puo' essere la soluzione anche perche' il problema non e' chiaro ...

    Dovresti controllare dopo la accept qual e' il codice di errore restituito ...

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    305
    Originariamente inviato da oregon
    E' difficile intuire quale puo' essere la soluzione anche perche' il problema non e' chiaro ...

    Dovresti controllare dopo la accept qual e' il codice di errore restituito ...

    grazie per la risposta:

    ti allego main.cpp che è il server e client.cpp per capire quale è il problema.

    Mi sembra un ottimo spunto per la tecnica di + client che inviano il proprio tread al server che gestisce i vari processi e smista a tutti i client l'avvenuta ricezione dei messaggi.

    Purtroppo ho questo errore che proprio non riesco a capire.

    grazie intanto... ma + avanti di così non riesco ad andare.

    poi vorrei sapere cosa ne pensi di questa tecnica.

    source:
    http://www.twork.it/work/cs_src.zip



    grazie per ora...):
    Oki.lib Libreria per creare il proprio Engine del sound nei propri progetti
    http://www.twork.it/public/oki/guestbook.asp

    Sistemi di Gestione Studio e Sviluppo per giochi a pronostici
    http://www.twork.it/programmi/programmi.html

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ho ricompilato la parte server e ho fatto un po' di debug usando il telnet come client.
    Ho visto che in quella if il programma entra regolarmente. Il problema sta nel thread che riceve i dati dal client collegato. C'e' questa riga

    nBytes = recv(clients[c].sock, (char *)&messageSize, sizeof(messageSize), 0);

    che non riesco a spiegarmi. Non ha senso e crea problemi gravi di accesso in memoria.

    Al suo posto, mi sarei aspettato qualcosa del genere

    nBytes = recv(clients[c].sock, buffer, MESSAGE_SIZE, 0);

    Ho interrotto il debug intanto per chiarire questo punto ...

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    305
    Originariamente inviato da oregon
    Ho ricompilato la parte server e ho fatto un po' di debug usando il telnet come client.
    Ho visto che in quella if il programma entra regolarmente.
    si ma continuando il ciclo nel while dopo la riga:
    incoming = accept(listening, NULL, NULL);
    c'è un errore di eccezzione che non riesco a capire.


    Originariamente inviato da oregon
    nBytes = recv(clients[c].sock, (char *)&messageSize, sizeof(messageSize), 0);
    questa funziona riceve il messaggio e lo stampa e poi reinvia ai client il messaggio di "OK"

    se provi a continuare il ciclo while dà quella eccezzione sopra è questo il problema.
    Oki.lib Libreria per creare il proprio Engine del sound nei propri progetti
    http://www.twork.it/public/oki/guestbook.asp

    Sistemi di Gestione Studio e Sviluppo per giochi a pronostici
    http://www.twork.it/programmi/programmi.html

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.