C RECV异步服务器 - 关节
C++ recv asyncronous server-client
我正在制作一个基本的聊天程序,我有问题。我想问RECV(插座,BUF,BUFLEN,0)是否在C 中是异步的?我在一段时间内使用它,并且它会阻止循环,直到服务器未将数据发送到客户端。
套筒默认情况下使用阻止I/O 。如果要使用非块I/O ,则必须通过在Windows上使用ioctlsocket(FIONBIO)
或在其他平台上使用fcntl(O_NONBLOCK)
来明确启用它。然后,I/O操作将在可检测的错误((WSA)EWOULDBLOCK
,EAGAIN
,EINPROGRESS
等)中失败,如果它会阻止呼叫者,因此您可以在以后重复该操作。
另外,您可以使用select()
或(e)poll()
在执行读/写操作之前等待插座处于可读/可读状态。或者,在某些平台上,您可以使用setsockopt()
启用SO_RCVTIMEO
/SO_SNDTIMEO
超时用于阻止读取/写操作。
如果您想要异步I/O 而不是(启动操作,然后在后台完成,然后在完成后通知您),则必须将I/O移动到单独的Worker线程中,或在Windows上,您可以使用一些支持重叠I/O和I/O完成端口的扩展套接字功能(ConnectEx()
,WSARecv()
,WSASend()
等)。
相关文章:
- "unknown ca"自生成的 CA、证书和客户端/服务器
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 有没有办法知道Tracer是否成功地完全连接到了jaegerclientcpp中的jaeger后端服务器
- 从服务器传输到客户端的消息不会出现
- QTcpSocket在不阻塞GUI的情况下重新连接到服务器
- OpenSSL TLS服务器-使用客户端证书白名单
- 我正在开发服务器,ip作为参数传递不起作用
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- 提升 Asio TCP 服务器 处理多个客户端
- 如何在 Minecraft 服务器上执行命令
- 调试编译的服务器在数据库打开时崩溃
- C++套接字客户端到 Python 服务器未创建连接
- 用于解析 win64 堆栈跟踪的命令行客户端(可以访问符号服务器)
- 将相机数据从服务器实时流式传输到客户端
- 为什么创建服务器后C++ httplib 库阻塞了我的主线程?
- 每个服务器请求的内存预算
- 如何将 Firebase 与基于 Linux 的客户端应用配合使用,以便与服务器进行双向消息通信
- 使用嵌入式猫鼬服务器托管应用程序
- C RECV异步服务器 - 关节