Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Kreator
    Registrato dal
    May 2002
    Messaggi
    278

    Problema su socket [C++]

    Ciao raga.

    Ho fatto un programmino client/server con le Winsock che spedisce dei semplici messaggi di testo al server, il quali li riceve e li stampa a video.
    Qualcuno mi sa spiegare il perche' quando vado a leggere sulla socket dal server, mi legge la stringa che gli ho spedito e in più tanti caratteri che non c'entrano niente ??

    Questi sono i blocchi di codice interessati:

    // CLIENT

    char Buffer[150] = "";
    do
    {
    cout << Buffer;
    strcpy (Buffer,"");
    cout << "Write new message ('.q' to escape): ";
    scanf ("%150s", Buffer);
    cout << "lenght: " << strlen (Buffer);
    send (sock,Buffer,strlen (Buffer),0);
    }while (strcmp(Buffer,".q")!=0);



    // SERVER

    client=accept(sock,(struct sockaddr*)&client_addr,&lun);
    cout << "Connection accepted from: " << inet_ntoa (client_addr.sin_addr);
    if (err!=0) printf ("Errore nella connessione");
    while (true)
    {
    recv (client,sms,150,0);
    _flushall();
    printf ("%d%s", strlen(sms),sms);
    }

    Ho provato anche a guardare i vecchi post, per esempio quello di Johnny_Depp, ma mi sembra molto simile.
    Qualcuno mi può dare una mano ?
    Grazies.


  2. #2
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Perchè nella funzione recv() dici di ricevere 150 caratteri e lui ne riceve 150!!
    Devi prima vedere quanti caratteri sono disponibili in ricezione e poi riceverne il numero giusto!
    Prova così:
    codice:
    DWORD sockByte;
    /*Lettura dei Byte in attesa di ricezione*/
    ioctlsocket(socket,FIONREAD,&sockByte);
    if(sockByte>0){
         recvbuf = new char[sockByte];
         /*Ricezione messaggio*/
         recv( sock, recvbuf, sockByte, 0 );
    }
    Dovrebbe andare
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  3. #3
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Dimenticavo, per la documentazione sulle winsock puoi guardare qui:
    http://msdn.microsoft.com/library/de..._functions.asp
    trovi anche la descrizione del metodo ioctlsocket().
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  4. #4
    Utente di HTML.it L'avatar di Kreator
    Registrato dal
    May 2002
    Messaggi
    278
    Perfetto.
    Ora funziona.
    Grazie mille anche per la documentazione
    Ciaoooo.


  5. #5
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Di nulla.
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

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.