12得票5回答
使用recv()和vector<unsigned char>的更优雅的方法

到目前为止,我有以下代码示例:... int nbytes =0; vector&lt;unsigned char&gt; buffer; buffer.resize(5000); nbytes = recv(socket, &amp;buffer[0], buffer.size(),0); ...

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

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

7得票1回答
Python套接字 - 同时发送/接收消息

基本上,我一直在使用socket和线程开发一个简单的聊天室。在我的客户端中,我可以接收和发送消息,但是我的问题是,在循环中,一个消息会在另一个消息之前到达,因此如果我正在发送消息,只有在我发送消息后才能接收数据。我希望它像其他聊天室一样工作,即我可以在发送消息时接收消息。任何帮助都将非常有帮助...

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

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

9得票4回答
当套接字关闭时,解除recvfrom的阻塞状态

假设我启动了一个线程来接收某个端口的数据。socket调用将在recvfrom上阻塞。然后,在另一个线程中,我关闭了这个socket。 在Windows上,这将解除recvfrom的阻塞,我的线程执行将终止。 但在Linux上,这并不会解除recvfrom的阻塞,因此,我的线程将永远无所作...

14得票5回答
如果使用MSG_PEEK进行非阻塞接收成功,那么随后不使用MSG_PEEK进行接收是否也会成功?

这是我正在处理的一些代码的简化版本:void stuff(int fd) { int ret1, ret2; char buffer[32]; ret1 = recv(fd, buffer, 32, MSG_PEEK | MSG_DONTWAIT); /* ...

11得票3回答
Linux套接字:如何使send()等待recv()?

我正在使用TCP协议制作一个简单的客户端-服务器应用程序。 我知道默认情况下,recv()会阻塞直到另一端调用send()发送消息到这个套接字。但是是否可能使send()自己阻塞,直到另一端已经recv()了消息,而不是继续将消息send()到出站队列,然后发现另一端通过多次send()得到...

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

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

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

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

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

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