一堆问题,先回答一个,建议用Overlapp方式
解决方案 »
- ring3 hook ntdll!NtCreateSection,为什么获取的ObjectAttributes经常无效
- MFC 控件变量的声明
- 怎样向程序添加和从程序释放出自定义资源
- vc写的dll,vc下调用正常,c#下出断言错误,帮助解决、提过思路立马给分
- BHO下如何可以修改Http头部的Referer呢?
- AutomateShellWindow,jiangsheng 大侠,请教问题?
- 关于消息定义的问题?
- DVD播放
- 关于winsocket 程序的编译问题,请高手指教
- 用VC++ 如何实现多列列表? [我现在正站在门槛上,你们谁能帮我入门那!!!]
- 在程序A中得到程序B的HINSTANCE,那如何在A中判断B是否结束呢?
- 图标资源问题?
先开线程,然后线程函数里面根据自己的需要设置状态字来控制线程的结束。
(WaitForSingleObject)服务端接到请求后开线程:
既然先接到请求,那怎么能在线程里面Accept呢?:)除非你能预见到你开个线程就能接收到请求。建议先利用VBWinsock控件做个简单的chat,会有助于你加深Socket编程的理解。
具体可以参考 机工社出版的 WINDOWS网络编程!!!原来是为软的!!! vcbear
是CSDN上的元老,但是他关于完成端口的那篇文章是抄那本书上的,作为程序员,我为他脸红111
注意,Overlapped方式并不等于重叠端口.
我的关于完成端口的文章是MSDN里的,我只是翻译,并且有翻译说明。希望你说话注意一点。
不要挑起争端。
CAsyncSocket类,不要直接用CSocket.
如果我要对每一个连接请求,都开一个接收线程
的话,应该怎么处理?麻烦你给出伪代码;
bear:
一个Socket可以在多个线程里使用吗?看来我必须用多线程
方式,否则Waitfor...Object的话会导致UI暂时无法工作的。
你只需要响应消息,进行Accept或read.你对消息应该了解吧,对UI是不会产生停止响应的。 需要等的是send操作,如果你的数据包比较大而且系统繁忙的话,同步的send操作不一定能
立刻返回,那么UI可能暂时不响应。我想,至少我的做法是:recv之后,如果需要发送,则
开一个线程执行send并等待操作完成。等待的方式可以是同步send,函数不成功不返回。要么是
Overlapped的方式,send调用立刻返回,用waitfor...等待完成。一般来说,用同步的
就可以了除非你的程序有什么别的考虑。
socket跟线程本身没有什么联系,可以在多个线程里使用。不过要注意同步和互斥问题。3215599() :不明白先看书,不要出言不逊.谢谢。
不过可以给出一段接收后send的伪代码吗?
具体就是线程里的同步/重叠send怎么设置,send后如何监视超时。
就这样,也许这是我要的最后一个回答了。
我想大致的架构出来了(指发端):发送用异步Overlapped方式,
用WSAWaitforXXXObject等待,结果是“接到”或“超时”;
接收的话直接用消息模式OnReceive,接到收端的确认信息后
将事件置为有信号状态。看来事件应该是一个全局变量或对话框类的
public变量才合适。
好了,我试试吧,似乎可以了。