gpt4 book ai didi

c++ - 套接字打印奇怪

转载 作者:行者123 更新时间:2023-11-30 02:55:50 25 4
gpt4 key购买 nike

我对在 winapi 中使用套接字是全新的,但我有这段代码,我正在尝试打印来自套接字的所有数据,但是当我尝试打印它时,它以混合符号的形式出现我是什么做错了。我四处寻找有关如何执行此操作的示例,但没有一个示例显示如何在从缓冲区收集数据后打印数据。

do 
{
#define DEFAULT_BUFLEN 512
int recvbuflen = DEFAULT_BUFLEN;
char recvbuf[DEFAULT_BUFLEN];
recv(ConnectSocket, recvbuf, recvbuflen, 0);
printf("%.*s", recvbuflen, recvbuf);
}
while (iResult > 0);

好吧,我已经把我的代码改成了这个

do 
{
#define DEFAULT_BUFLEN 1000000
int recvbuflen = DEFAULT_BUFLEN;
char recvbuf[DEFAULT_BUFLEN];
ssize_t len = recv(ConnectSocket, recvbuf, recvbuflen, 0);
recv(ConnectSocket, recvbuf, recvbuflen, 0);
printf("%.*s", recvbuflen, recvbuf);
}
while (iResult > 0);

但现在它似乎并没有打印出套接字的所有信息,只是第一部分

最佳答案

正如 Valeri 和其他人所说,您应该忽略 recv 的返回值。但是默认情况下所有套接字都是阻塞的,我没有看到你使用的是非阻塞套接字。因此,除非连接被切断,否则 recv 将等到缓冲区已满再返回。我认为这不会导致您的问题。

如果您通过网络发送随机数据,您得到的结果正是人们所期望的。任何大于 127 的字符值称为 Extended ASCII很可能看起来是一个奇怪的符号。小于 32 的字符值也称为 control characters可能会导致发出哔哔声或出现字符删除。

关于c++ - 套接字打印奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16131677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com