recv

    1热度

    1回答

    TCP可以任意合并和拆分数据包。因此,假设我这样做,例如,这样的电话: `recv(sock, buf, 15, 0)` 但此时此刻只有5字节的数据立即可用 - 威尔recv()块,直到15字节的数据是可用的,或将我只能得到5字节? 我这么问是因为我想知道如果我能读,例如uint32_t只是这样(假设i是uint32_t类型的变量): if(recv(sock, &i, sizeof(uint

    0热度

    1回答

    我有一个模块接收两部分的数据。首先是一个无符号整数,表示接下来将要跟随的数据的长度。然后是数据本身。我这样做如下无限循环 unsigned int z; struct kvec vec; struct msghdr msg; while(1) { memset(&vec, 0, sizeof(vec)); memset(&msg, 0, sizeof(msg));

    0热度

    1回答

    标志MSG_WAITALL可用于recv,它要求recv阻塞,直到满足完整请求。这意味着recv将不会返回,直到收到尽可能多的数据(由参数len指定),除非发生错误或连接已关闭。 为什么这样的标志不适用于send?我认为这将是非常有用的发送(send不会返回,直到主叫方想发送的所有字节已交给TCP发送缓冲区)

    0热度

    1回答

    发送的所有数据我真的不知道这是否是某种延迟的网络,我的电脑,或其他什么,我很新的套接字编程,并已努力使这项工作了一段时间,实现一个简单的框架,以缓解我的课将来的项目我的工作,我在我有问题使用这些功能: void TCPSocket::send(const std::string& message, int flags) { if (isListening || !isConnected

    0热度

    1回答

    假设下面的代码(为简单起见,我省略了必要的错误处理): recv(sockfd, NULL, 0, MSG_PEEK); recv(sockfd, buff, bufflen, 0); 在这种情况下,我可以肯定的是,第一次调用recv后整个数据报已经收到并因此第二个电话recv不会阻止? 或者它可以发生,如果IP拆分数据报,第一recv回报,只要该数据报的任何部分被接收,而第二recv将阻塞

    1热度

    1回答

    我想学习钩子,并且只想钩住.exe的send/recv函数。 我建设项目作为一个.dll文件,然后将其注入到.EXE 现在我的问题是我坚持。 我能够顺利地找到地址recv函数,接下来我想查看通过接收数据包.. 小指南请在下一步做什么.. 这是我的.cpp #include <windows.h> #include <stdio.h> #include <stdlib.h> #include

    2热度

    2回答

    如果一个C socket的recvmsg()有一个队列,我怎么知道有多少项目在队列中积压? 我的问题是,我从recvmsg()收到的东西后,代码的速度有时慢于发送到recvmsg()的数据的速度,这会在逻辑上导致队列?如果队列变得太大会发生什么? 例如,如果这是我的recv()代码: while (recvmsg(SocketA,...) > 0) { ... ...some

    0热度

    1回答

    我不能得到的recv数据() 我想要的数据,在表单字段的用户输入 代码: def recvall(self, conn): BUFF_SIZE = 4096 # 4 KiB data = "" while True: packet = conn.recv(BUFF_SIZE).decode('utf-8') data += packet

    0热度

    2回答

    我有一个TCP处理数据流。它一次只需要4096个字节,但我需要一种方法在recv之前找出整个套接字的大小。这样我就可以确定在套接字切换之前套接字将被读取多少次。它也会通知这是这个套接字的最后一个recv,所以我可以在选择切换到另一个套接字之前做一些事情。 def handle_tcp(self, sock, remote): fdset = [sock, remote] whi

    0热度

    1回答

    在阻塞套接字上,可以在对recv()的调用中标记MSG_WAITALL,并将套接字选项SO_RCVTIMEO 与套接字上的setsockopt()调用一起使用? 我在这里的目标是要么接受一个完整的邮件,或超时/错误...