如何正确使用WSAAsyncSelect?

时间:2009-07-15 23:08:28

标签: winapi wsaasyncselect

我在这里问了很多关于WSAAsyncSelect和NET的问题。几个月前我甚至花了500个代表来奖励并自己回答(我做了一个包装)。最后我习惯了在框架。

今天我问的是非托管语言,不好的一点是我错过了使用套接字处理框架的方式。我在Delphi中编写我的项目,但我理解类似C语言,所以它不是问题,我甚至没有要求任何代码。我喜欢自然的东西,所以请不要建议任何组件,纯粹的代码。 :)

人们说创建另一个隐藏表单并在其中设置消息循环以正确使用AsyncSelect是一件好事。

好吧,我的问题很简单:我把我编写的整个winsock函数放在隐藏的表单中让我的生活变得更容易,我也用它的句柄设置了WSaAsyncSelect,消息循环也在那里,但我写的是孩子类(很多类,巨大的代码),父类是隐藏的形式。

WSAAsyncSelect是线程安全的吗?这会减慢事情(我对课程做了什么)?

我是否必须在消息循环之外创建线程?

任何有关正确使用AsyncSelect的其他提示都将非常受欢迎。

编辑:为了避免任何误解,我直接询问AsyncSelect()。我工作的项目需要2个服务器和1个客户端,我认为可以通过该调用很好地处理

1 个答案:

答案 0 :(得分:1)

  

人们说创造另一个人是件好事   隐藏的表单并设置消息循环   在那里正确使用AsyncSelect。

您是直接编写WinSock,还是使用VCL的TClientSocket和TServerSocket组件?如果是后者,那么他们已经在内部为您处理WSAAsyncSelect()(是的,他们确实使用了自己的隐藏窗口)。

  

WSAAsyncSelect是线程安全的吗?

  

这会减慢事情(我的意思   完成课程)?

你还没有真正解释过这些课程的内容。

  

我是否必须在外面创建线程   消息循环?

不,但如果需要,多个线程可以使用套接字。但是,套接字消息只会由传递给WSAAsyncSelect()的窗口所拥有的任何线程处理。