C++ Winsock 2 题

标签 c++ api winsock2

我已经通读了 MSDN 上的 Winsock2 文档,但如果有人能提供帮助,我仍然需要澄清一些事情。

我计划做一些类似于您在使用 WSAAsyncSelect() 时获得的设置,但使用一个单独的线程。我可以使用 WSAEventSelect() 将多个套接字链接到单个事件对象吗?

如果我改为使用完成端口,我可以通过完成端口获取哪些事件? MSDN 有一个文件操作列表,但我无法将它们与将通过完成端口发送的事件(FD_READ、FD_WRITE 等)联系起来。有没有办法告诉哪个事件正在完成?还是我每次发送或接收内容时都必须注意这一点并将其存储在结构中?

感谢任何*帮助任何人都可以给我这个 =D

编辑:更好的是,我是否最好切换到 C# 来执行此操作?它似乎很受欢迎,更适合这项特定任务。

最佳答案

不,您不能将多个套接字链接到单个 WSAEVENT。您必须为每个要接收通知的套接字调用 WSACreateEvent() 和 WSAEventSelect()。不过,您可以使用 WSAWaitForMultipleEvents() 让单个线程等待来自多个套接字的事件。

关于使用完成端口,我建议你阅读MSDN关于此事的文章,例如:

Windows Sockets 2.0: Write Scalable Winsock Apps Using Completion Ports .

关于C++ Winsock 2 题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3373303/

相关文章:

java - 改进如何在 GET 中传递位置

python - Ibpy 与 Interactive Brokers API 不工作

java - 为大量外部 API 请求扩展软件/硬件?

c++ - 无法断开和重新连接套接字(C++,winsock2)

c++ - 关于 C++ 套接字,为什么服务器总是返回相同的结果?

delphi - 如果另一端没有从套接字读取数据,如何避免在 Indy 中写入套接字时卡住

c++ - boost::variant中的类holden的拷贝构造函数存在问题

c++ - 使用算法删除 vector 中的特定元素

c++ - 编译器配置中的命令参数

c++ - 在 Visual Studio 2008 中使用 C++ 创建简单 COM 组件的示例