Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [C] socket

  1. #1

    [C] socket

    salve a tutti

    ho iniziato da poco a studiare i socket in linguaggio C. E già nascono, non tanto problemi, ma piuttosto curiosità:

    dopo la creazione del socket e tutto il resto, ci sarà la parte di codice dedicata al send() e recv() dei dati: cioè quando l'host sarà in attesa con la recv():

    codice:
    //var( alcune, solo quelle necessarie a comprendere il codice )
      SOCKET sock_desc;
      SOCKET new_sock_desc;
      SOCKADDR_IN client_addr;
      int recv_byte;
      int length_sock= sizeof( SOCKADDR_IN );
      char buffer[1024];
    
    ...
    
    while( 1 )
      {
        new_sock_desc= accept( sock_desc, (SOCKADDR*) &client_addr, &length_sock );
    
    
        printf("connected from %s port %d", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port) );
        send( new_sock_desc, "hello world!\n", 13, 0 );
    
    
        recv_byte= recv( new_sock_desc, buffer, 1024, 0 );
    
    
        while( recv_byte > 0 )
        {
          printf("bytes received: %d\n", recv_byte );
          recv_byte= recv( new_sock_desc, buffer, 1024, 0 );
        }
    
    
        close( new_sock_desc );
      }
    a questo punto, se il client chiude la connessione con l'host come faccio a capire se il socket_client è stato chiuso o no( dal punto di vista dell'host ovviamente )?

    per esempio stampare: "socket closed"

    grazie in anticipo

  2. #2
    ho già risolto, grazie lo stesso

    in poche parole credo che appena il client socket viene chiuso la recv riesce a notarlo e dovrebbe restituire 0; di conseguenza esce dal ciclo e viene chiamata la close().

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.