Domanda

Sto avendo una comprensione momento davvero difficile perché è questo pezzo di codice fare il mio segnale acustico del computer. Ho isolato questa sezione di codice ad essere quello che produce il segnale acustico occasionale, ma non vedo qual è il problema con esso.

const int BUFFER_LENGTH = 8192;
char buffer [BUFFER_LENGTH + 1];
int recvResult;

do
{
    recvResult = recv(webSocket, buffer, BUFFER_LENGTH, 0);
    buffer[recvResult] = '\0';
    printf("%s", buffer);
    if (recvResult > 0)
    {
        sendResult = send(clientSocket, buffer, recvResult, 0);
    }
}while (recvResult > 0);

shutdown(webSocket, SD_SEND);

Per dare un po 'di contesto, questo è per una classe di reti di computer in cui dobbiamo codice di un proxy. Quindi quello che sto facendo è ascoltare la risposta e semplicemente in avanti al cliente.

Non posso dirvi quanto in alto sono saltato dalla sedia quando ho sentito il segnale acustico del rumore ...

È stato utile?

Soluzione

Il buffer probabilmente contiene un char '\a' che rende il segnale acustico del computer. Da 5.2.2 (semantica Display dei caratteri):

  

sequenze di escape alfabetici rappresentano caratteri non grafici dell'insieme di caratteri di esecuzione sono destinate a produrre azioni su dispositivi di visualizzazione come segue:

     
      
  • \ a (alert) Produce un segnale acustico o visibile senza modificare la posizione attiva.
  •   

Altri suggerimenti

Non importa, trovato, era in realtà la dichiarazione printf che stava facendo un beep occasionale!

Sono d'accordo con la spiegazione '\a' segnale acustico.

Un altro punto circa il vostro codice:

recvResult = recv(webSocket, buffer, BUFFER_LENGTH, 0);
buffer[recvResult] = '\0';

Si noti che recvResult sarà -1 se c'è un errore di I / O (o se si sta lavorando in modalità non bloccante e non ci sono dati a letto finora).

In questo caso in un solo clic scrivere nella memoria proibita, che è (accidenti, come odio questa frase) comportamento non definito . Semplicemente parlando -. Sovrascrittura della memoria, che è male

Si dovrebbe verificare la presenza di errore di socket prima la scrittura in buffer

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top