使用 async_write 同时写入不同的套接字
Writing to different sockets in the same time using async_write
我想写服务器(TCP/IP),我有一些问题,因为我不确定我是否考虑正确。
我需要一个只有一个线程的服务器。我需要向某些客户端读取和写入数据。我想使用boost::asio
的async_accept
、async_write
、async_read
等。
如果同时为不同的客户端调用async_write
可以吗?如果我的程序为一个客户端调用async_write
,而在调用处理程序之前,它为另一个客户端调用async_write
,该怎么办?
关于async_read
的相同问题.
这不是问题吗?
是否保证(在这种情况下)第一次调用async_write
的回调将在第二个async_write
的回调之前调用?
如果某些回调(处理程序)需要很长时间怎么办?其他回调只是在堆栈中等待,直到这个回调完成?如果这个回调永远不会结束,另一个回调将永远不会被执行?我说的对吗?
重叠异步
读取和写入对不同套接字的调用没有问题。我建议您为每个连接提供自己的链,以便在您决定添加TLS支持或使用多个线程时将来不会中断。可以按任何顺序调用完成处理程序,具体取决于操作实际完成的顺序。当然,不能在同一连接上同时执行两个异步读取操作或两个异步写入操作。
- 不,这不是问题。
- 不,这是没有保证的。
- 不,回调不应该互相等待。 不
- ,你说得不对。
每个套接字的套接字 I/O 独立进行。
相关文章:
- 当套接字连接断开时检测C/C++Unix
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 如何在C/C++中用FD_set Unix设置套接字文件描述符
- 套接字读取后,我在缓冲区中看到意外输入
- 如何在CPP中创建应该在Windows和Linux上运行的套接字?
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- 套接字连接"Operation not permitted"错误,甚至使用升压/平发器根.cpp
- WINAPI 注册应用程序重新启动时不清除打开的套接字
- (Winsock) UDP 接收工作正常,但同一套接字的发送失败
- MSG_WAITALL的套接字发送得到了 22 EINVAL
- C++套接字客户端到 Python 服务器未创建连接
- 在不知道套接字的情况下关闭网络连接
- C++套接字对不读/写父/子
- 非更新套接字消息
- SIGSEGV on Boost UDP 套接字关闭 - tcache_get at malloc.c.
- 将"uint8_t"(从套接字读取)隐式转换为"char"安全吗
- 当对套接字 send() 的同步调用由于连接另一端丢失而被阻止时,如何恢复?
- 当客户端在 write() 期间终止连接时,由对等套接字错误重置连接
- 了解是否接受套接字