Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么下面的代码使我的计算机发出哔哔声?_C++_Windows_Winsock2 - Fatal编程技术网

C++ 为什么下面的代码使我的计算机发出哔哔声?

C++ 为什么下面的代码使我的计算机发出哔哔声?,c++,windows,winsock2,C++,Windows,Winsock2,我真的很难理解为什么这段代码让我的电脑发出哔哔声。我已经隔离了这段代码,使之成为偶尔发出嘟嘟声的代码,但我不知道它有什么问题 const int BUFFER_LENGTH = 8192; char buffer [BUFFER_LENGTH + 1]; int recvResult; do { recvResult = recv(webSocket, buffer, BUFFER_LENGTH, 0); buffer[recvResult] = '\0'; print

我真的很难理解为什么这段代码让我的电脑发出哔哔声。我已经隔离了这段代码,使之成为偶尔发出嘟嘟声的代码,但我不知道它有什么问题

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);
让我们了解一下上下文,这是一个计算机网络类,在这个类中我们必须编写一个代理。因此,我所做的是倾听答案,然后简单地将其转发给客户


我无法告诉你,当我第一次听到哔哔声时,我从椅子上跳了多高…

缓冲区可能包含一个“\a”字符,使计算机发出哔哔声。根据5.2.2字符显示语义:

表示执行字符集中非图形字符的字母转义序列用于在显示设备上产生如下操作:

\警报会在不改变激活位置的情况下发出声音或可见警报。
缓冲区可能包含使计算机发出哔哔声的'\a'字符。根据5.2.2字符显示语义:

表示执行字符集中非图形字符的字母转义序列用于在显示设备上产生如下操作:

\警报会在不改变激活位置的情况下发出声音或可见警报。
没关系,找到了,实际上是printf语句发出了一声偶然的哔哔声

没关系,找到了,实际上是printf语句发出了偶尔的哔哔声

同意“\a”嘟嘟声的解释

关于您的代码,还有一点:

recvResult = recv(webSocket, buffer, BUFFER_LENGTH, 0);
buffer[recvResult] = '\0';
请注意,如果存在I/O错误,或者如果您在非阻塞模式下工作,并且到目前为止没有要读取的数据,recvResult将为-1

在这种情况下,你会把它写进禁止的记忆中,这是该死的,我多么讨厌这个短语——未定义的行为。简单地说,内存覆盖是不好的

您应该在写入缓冲区之前检查套接字错误

同意“\a”蜂鸣音的解释

关于您的代码,还有一点:

recvResult = recv(webSocket, buffer, BUFFER_LENGTH, 0);
buffer[recvResult] = '\0';
请注意,如果存在I/O错误,或者如果您在非阻塞模式下工作,并且到目前为止没有要读取的数据,recvResult将为-1

在这种情况下,你会把它写进禁止的记忆中,这是该死的,我多么讨厌这个短语——未定义的行为。简单地说,内存覆盖是不好的


您应该在写入缓冲区之前检查套接字错误

是的,我也发现了。我对此一无所知!是的,我也发现了。我对此一无所知!我感兴趣,怎么会?我不能用printf使我的电脑扬声器发出哔哔声\a我做错什么了吗?我不知道,从我读到的printf\a应该让你的电脑发出哔哔声…@新手:不是每个操作系统都支持哔哔声。我感兴趣,怎么办?我不能用printf使我的电脑扬声器发出哔哔声\a我做错什么了吗?我不知道,从我读到的printf\a应该让你的电脑发出哔哔声…@新手:不是每个操作系统都支持哔哔声。