相关疑难解决方法(0)

read()会在select()之后阻塞吗?

我正在通过TCP/IP套接字读取数据流.流负载非常不均匀.有时大量的数据每秒都会到达,有时一小时内没有数据.在长时间不活动期间(没有来自远程服务器的数据,但连接仍在线),我的程序应采取一些措施.

我正在使用select()实现超时.它告诉我是否有数据准备就绪,但我不知道究竟能读多少而不会导致read()阻塞.阻塞是不可接受的,因为它可能比我需要的超时时间长得多.

为了提高效率,将流读入大缓冲区,并使用该缓冲区大小提供read()调用.

如果要填充的缓冲区大于套接字中现有的可用数据量,那么read()会在select()之后阻塞吗?

sockets linux

18
推荐指数
1
解决办法
1万
查看次数

Windows API类似于pthread_cancel?

是否存在类似于pthread_cancel,pthread_testcancel等的Windows本机API?

如果没有,我们如何使用Windows中的pthread_cancel机制模拟从另一个线程中取消一个线程?

c windows multithreading

4
推荐指数
1
解决办法
2025
查看次数

如何退出阻止recv()调用?

基于这个问题,当你调用已经使用closesocket()的套接字时,数据包将被发送到另一端而不是执行正常的断开连接(4次握手).recv()RST

但我希望执行一个优雅的断开连接,所以我需要recv()在呼叫之前退出closesocket().

有没有办法做到这一点?

c++ sockets winapi network-programming winsock

1
推荐指数
1
解决办法
2377
查看次数