我在这里问了很多关于WSAAsyncSelect和NET的问题。几个月前我甚至花了500个代表来奖励并自己回答(我做了一个包装)。最后我习惯了在框架。
今天我问的是非托管语言,不好的一点是我错过了使用套接字处理框架的方式。我在Delphi中编写我的项目,但我理解类似C语言,所以它不是问题,我甚至没有要求任何代码。我喜欢自然的东西,所以请不要建议任何组件,纯粹的代码。 :)
人们说创建另一个隐藏表单并在其中设置消息循环以正确使用AsyncSelect是一件好事。
好吧,我的问题很简单:我把我编写的整个winsock函数放在隐藏的表单中让我的生活变得更容易,我也用它的句柄设置了WSaAsyncSelect,消息循环也在那里,但我写的是孩子类(很多类,巨大的代码),父类是隐藏的形式。
WSAAsyncSelect是线程安全的吗?这会减慢事情(我对课程做了什么)?
我是否必须在消息循环之外创建线程?
任何有关正确使用AsyncSelect的其他提示都将非常受欢迎。
编辑:为了避免任何误解,我直接询问AsyncSelect()。我工作的项目需要2个服务器和1个客户端,我认为可以通过该调用很好地处理
答案 0 :(得分:1)
人们说创造另一个人是件好事 隐藏的表单并设置消息循环 在那里正确使用AsyncSelect。
您是直接编写WinSock,还是使用VCL的TClientSocket和TServerSocket组件?如果是后者,那么他们已经在内部为您处理WSAAsyncSelect()(是的,他们确实使用了自己的隐藏窗口)。
WSAAsyncSelect是线程安全的吗?
是
这会减慢事情(我的意思 完成课程)?
你还没有真正解释过这些课程的内容。
我是否必须在外面创建线程 消息循环?
不,但如果需要,多个线程可以使用套接字。但是,套接字消息只会由传递给WSAAsyncSelect()的窗口所拥有的任何线程处理。