📄 subject_23225.htm
字号:
<p>
序号:23225 发表者:轩 发表日期:2002-12-02 16:13:50
<br>主题:客户端怎样实现和服务器通信时打开一个监听端口,且又能够保持效率,即可进行别的进程。用多线程的话,怎么实现?请教了!
<br>内容:客户端怎样实现和服务器通信时打开一个监听端口,且又能够保持效率,即可进行别的进程。用多线程的话,怎么实现?请教了!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:王浩 回复日期:2002-12-02 21:11:31
<br>内容:如果是单CPU,并且在Windows下,可以利用Windows的消息循环机制,效率要比多线程高。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:轩 回复日期:2002-12-03 09:31:40
<br>内容:这位大哥,能举个例子吗?其他朋友呢?请多多帮忙<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:和风 回复日期:2002-12-04 11:15:26
<br>内容:请wanghao0727 王浩仔细讲解一下如何实现。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:轩 回复日期:2002-12-05 08:56:46
<br>内容:我现在的做法是:把客户端的监听服务程序写成一个监听线程,然后写一个Listen()函数,Listen()里用CreatThread()创建监听线程。最后在主程序里调用Listen()即可实现,现在感觉效率还行。这样做没问题吧
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:DarkCoder 回复日期:2002-12-05 10:07:05
<br>内容:这两个线程是毫不相干的阿,有什么效率可言呢<BR>DWORD WINAPI ConnectionThread()<BR>{<BR> //创建socket<BR> //连接服务器<BR> //与服务器的读写线程<BR>}<BR>DWORD WINAPI ListenThread()<BR>{<BR> //创建listen socket<BR> //bind();<BR> //listen();<BR> //while(true)<BR> //{<BR> // Accept();<BR> // 新的socket线程;<BR> //<BR> // } <BR> //while 中可以用select 模型,或WSAEVENTSELECT模型代替以提高效率。<BR>}<BR>//<BR>WinMain(.......)<BR>{<BR> CreateProcess(...., ListenThread,...);<BR> CreateProcess(...., ConnectionThread, ...);<BR> //结束线程<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:王浩 回复日期:2002-12-05 22:38:34
<br>内容:消息循环在单CPU的情况下比线程效率要高很多,因为它不需要去花费额外的时间在线程的挂起和运行状态中来回切换。<BR>CSocket和CAsyncSocket都是一个不错的选择。CAsyncSocket封装了Windows Socket API,CSocket则在高一级上和文件系统一起进行了封装。<BR>如果你想处理更低级的消息,可以使用WSA的异步消息函数,去创建监听事件。<BR>总之,如果你在Window下,应该尽量使用消息来代替线程,这样作,还可以避免使用同步对象时给系统带来的额外负担。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -