157得票6回答
当调用套接字库中的recv函数时,我的接收缓冲区应该设置多大?

我对C语言中的socket库有几个问题。下面是一段我将在问题中引用的代码片段。char recv_buffer[3000]; recv(socket, recv_buffer, 3000, 0); 如何确定recv_buffer的大小?我现在使用3000,但这只是个随意的数字。 如果recv...

90得票4回答
如果在非阻塞套接字上调用Python的socket.recv()方法时,在超时之前没有接收到任何数据,它会返回什么?

基本上,我在几个地方读到过 socket.recv() 会返回其可以读取的任何内容,或者一个空字符串,表示对方已关闭连接(官方文档甚至没有提到在连接关闭时它会返回什么...太好了!)。这对于阻塞式套接字来说是完全可以的,因为我们知道只有在实际有数据可接收时recv()才会返回,所以当它返回一个...

60得票7回答
在C语言中通过套接字传递结构体

我试图从客户端到服务器或者反过来传递整个数据结构。假设我的数据结构如下:struct temp { int a; char b; } 我正在使用 sendto 函数发送结构变量的地址,并且在另一端使用 recvfrom 函数接收它。但是我无法在接收端获得原始数据。在 sendto 函数...

60得票7回答
Python套接字接收 - 收到的数据包大小总是不同

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

26得票1回答
Python中的socket.recv()方法如何知道消息已经到达结尾?

假设我将客户端套接字的缓冲区大小设置为1024:recv(1024) 假设服务器想要发送给我一个由2024个字节组成的消息。我的套接字只能接收1024个字节。其他1000个字节会发生什么? recv方法会等待一定的时间(比如2秒钟)来接收更多的数据,超过这个时间后就会停止工作吗?(即使剩余的...

20得票4回答
如何在Python中的另一个线程中终止socket.recv()函数?

我有一个等待连接的主线程。它会生成客户端线程,以回传来自客户端(在本例中为telnet)的响应。但是,假设我想在一段时间后关闭所有套接字和所有线程,例如在1个连接之后。 我该怎么办?如果我从主线程中执行 clientSocket.close(),它将无法停止进行 recv 操作。只有在我通过...

18得票3回答
套接字select()与非阻塞recv的区别

我看到了几篇文章比较了select()和poll()或epoll(),也看到了很多指南讨论如何使用select()来处理多个套接字。但是,我找不到一个没有使用select()的非阻塞recv()调用的比较。如果只有1个要读取数据的套接字和1个要写入数据的套接字,是否有理由使用select()调...

17得票3回答
将接收函数的超时时间设置为多少?

我使用recv函数从套接字中读取数据。当没有可用数据时,我的程序就会停止运行。我发现可以使用select函数设置超时时间。但是看起来超时时间只会影响select函数本身,而在select之后执行的recv仍然会持续等待。fd_set set; struct timeval timeout; F...

15得票3回答
C套接字:接收和发送所有数据

我希望获得类似于以下行为: 运行服务器 运行客户端 客户端输入命令,例如 "help" 或其他命令 服务器做出适当的响应 返回步骤3 问题在于当我的函数excCommand("help")运行时,只收到并打印了一些文本。 我的文本文件如下:COMMAND HELP: help - ...

15得票2回答
Python - 将 sock.recv 转换为字符串

我正在使用Python和网络进行挖掘。while True: data = sock.recv(10240) 这绝对是听取操作。但似乎需要将它转换为文本字符串。 我见过一些人使用struct.unpack(),但我不确定它的确切作用。 如何进行转换?