问题标签 [recv]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
6155 浏览

c - 从两个线程在同一个阻塞套接字上调用 recv()

如果我有一个套接字,s当前没有可用的数据,它是一个阻塞套接字,并且我recv同时从两个线程调用它,会发生什么?其中一个线程会获取数据吗?双方都会得到吗?第二次调用会recv返回错误吗?

0 投票
2 回答
11465 浏览

c++ - C++ - 绕道 WinSock Hooking

我想要做的是使用Detours 库挂钩到应用程序 WinSock2 send() 和 recv() 函数(数据包记录器)。

虽然它适用于 send() 函数,但它不适用于 recv() 函数。

这是我的相关代码:

有任何想法吗?

编辑:所以我也连接了 recvfrom() 和 WSARecvEx(),但它仍然没有记录传出的数据包!我已经用我的确切代码更新了我的代码。

0 投票
5 回答
22913 浏览

sockets - 如果带有 MSG_PEEK 的非阻塞接收成功,那么后续没有 MSG_PEEK 的接收也会成功吗?

这是我正在处理的一些代码的简化版本:

如果我们假设第一次调用 recv 成功,返回一个 1 到 32 之间的值,那么假设第二次调用也会成功是否安全?ret2 可以小于 ret1 吗?在哪些情况下?

(为了清楚起见,假设在第二次调用 recv 期间没有其他错误条件:没有传递信号,它不会设置 ENOMEM 等。还假设没有其他线程会查看 fd。

我在 Linux 上,但我相信 MSG_DONTWAIT 是这里唯一特定于 Linux 的东西。假设之前在其他平台上设置了正确的 fnctl。)

0 投票
2 回答
11470 浏览

objective-c - 帮助发送/接收 UDP 数据包 - C 套接字

好的,如果您查看我以前的一些问题,我一直在努力建立一个简单的连接并使用 C 套接字运行(我对程序的整个网络方面仍然相当陌生,但每个人都必须从某个地方开始, 对?)。到目前为止,我已经包含了下面的代码,当我执行它时,我没有收到任何错误,但同时,我没有收到另一端的数据包。顺便说一句,我在 Objective-C 中编写多播套接字,“msgStatus”只是我 GUI 中的一个标签(它连接正确,所以那里没有问题)。我只是没有看到我要去哪里错了。有人可以帮助我或指出我正确的方向吗?谢谢!

这是我用来提取 IP 地址的代码。

0 投票
7 回答
93396 浏览

c - 通过 C 中的套接字传递结构

我正在尝试将整个结构从客户端传递到服务器,反之亦然。让我们假设我的结构如下

我正在使用sendto并发送结构变量的地址并使用recvfrom函数在另一端接收它。但我无法获得在接收端发送的原始数据。在 sendto 函数中,我将接收到的数据保存到 struct temp 类型的变量中。

其中 pkt 是 struct temp 类型的变量。

尽管我收到了 8 字节的数据,但如果我尝试打印它只是显示垃圾值。对修复它有什么帮助吗?

注意: 不必使用第三方库。

EDIT1:我对这个序列化概念真的很陌生..但是如果不进行序列化,我不能通过套接字发送结构吗?

EDIT2:当我尝试使用sendtorecvfrom函数发送字符串或整数变量时,我在接收端正确接收数据。为什么不是在结构的情况下?如果我不必使用序列化功能,那么我应该单独发送结构的每个成员吗?这确实不是一个合适的解决方案,因为如果有“n”个成员,那么就会添加“n”行代码来发送或接收数据。

0 投票
5 回答
3524 浏览

c++ - recv() 上的 http 客户端阻塞

我需要一些帮助来编写一个 http 客户端。当我尝试从网络服务器接收数据时,问题就来了。recv() 调用会阻塞程序。任何更好的方向都会非常有帮助,我将在下面发布我的代码:

}

0 投票
2 回答
319 浏览

windows - 接收socket的顺序

我正在使用套接字以 TCP 流模式将数据从本地机器发送到远程。本地端的代码是:

数据的大小约为 1Mb,因此 socket 可能会将其分成几个数据包。当我在远程端接收数据时,我必须单独接收数据,然后将它们组合在一起。远程端的代码是:

奇怪的是。如果我取消注释远程端的消息块,接收顺序将被颠倒。因此,远程数据的结果的顺序不正确。

为什么?(我怎样才能得到每个片段的正确顺序?)

提前致谢。

0 投票
7 回答
162415 浏览

python - Python套接字接收 - 传入的数据包总是有不同的大小

我将 SocketServer 模块用于 TCP 服务器。我在recv()函数中遇到了一些问题,因为传入的数据包总是有不同的大小,所以如果我指定recv(1024)(我尝试使用更大的值,更小的值),它会在 2 或 3 个请求后卡住,因为数据包长度会变小(我认为),然后服务器卡住直到超时。

如果客户端通过同一个源端口发送多个请求,但服务器卡住了,任何帮助将不胜感激,谢谢!

0 投票
1 回答
1313 浏览

winapi - 如何从流(tcp)套接字中读取确切的字节数?

在 winsock 中,只要流套接字中有可用数据,同步recv和异步都会完成,而不管指定的大小(这只是上限)。WSARecv这意味着为了从流中读取固定数量的字节,应该应用一些自定义缓冲。并且除非每次读取都单独缓冲,否则会导致双缓冲,即每个套接字实际上有两个缓冲区。

有没有办法让winsock代表它自己缓冲数据,并且只有在指定的字节数可用时才完成操作(除非发生错误)?

编辑:这个功能应该特别适用于异步套接字。

0 投票
2 回答
236 浏览

http - 通过winsocket接收图片

我在本地机器上运行了一个代理服务器,用于在冲浪时缓存图像。我将浏览器设置为 127.0.0.1 的代理,接收 HTTP 请求,获取数据并将其发送回浏览器。它适用于除大图像之外的所有内容。当我收到图像信息时,它只显示一半图像(例如:谷歌徽标的上半部分)这是我的代码:

socketClient_ 是非阻塞的。知道如何解决这个问题吗?