📄 subject_32270.htm
字号:
<p>
序号:32270 发表者:doggou 发表日期:2003-03-11 10:02:09
<br>主题:使用CSocket时的一些困惑
<br>内容:问题描述:我用MFC的CSocket类的时候,一般申明一个CSocket mySocket;为全局变量,然后在对话框的OnInitDialog()函数中 mySocket.Create(51234);<BR> mySocket.Listen();<BR><BR>困惑一:<BR> 我的程序是一个单线程的吗?为什么主界面执行的时候,mySocket也在同时执行。这样做程序运行稳定否。<BR><BR>困惑二:<BR> 如果上面的做法是单线程,我该怎么做,才能使我的CSocket对象另外开一个线程。<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>
回复者:披着鸽毛的鹰 回复日期:2003-03-11 10:31:59
<br>内容:你自己去开一个UI线程也可以地。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:sky++ 回复日期:2003-03-11 13:05:54
<br>内容:UI线程实例<BR>http://www.vchelp.net/vchelp/zart/2types_thread.asp?type_id=28&class_id=1&cata_id=2&article_id=57
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:doggou 回复日期:2003-03-12 09:43:12
<br>内容:呵呵,帮忙回答第一个问题,我那样做是单线程还是多线程。<BR>如果是单线程,为什么主界面和SOCKET在同时执行。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:高扬 回复日期:2003-03-12 10:16:21
<br>内容:从你的程序表面看,是单线程的,但CSOCKET本身的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>
回复者:zmingcd 回复日期:2003-03-12 16:12:46
<br>内容:多线程<BR><BR>CSocket对象生成后是一个独立的线程
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:jackyxio 回复日期:2003-03-13 00:12:17
<br>内容:是单线程的,因为listen是不会阻塞的,要调用accept或recv才会被阻塞住,如果想单线程实现,也可以用异步的方式。<BR><BR>不过,最好产生一个线程出来处理会好一些,不管你是用同步socket还是异步socket。<BR><BR>socket对象另外开一个线程???线程创建用createthread函数就可以了。原型自己查查MSDN!
<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>回复者:战鹰 回复日期:2003-03-19 15:55:20
<br>内容:单线程的,实际上CSocket和CAsyncSocket都创建了一个窗口,通过消息来处理各种操作!!!<BR><BR>你可以看他的源代码!!!<BR><BR>要多线程的话,你可以从CAsyncSocket和CSocket分别继承一类,在CAsyncSocket的派生类的OnAccept中写启动线程的代码,将一SOCKET句柄传给线程,由线程里的CSocket派生类Attatch<BR>SOCKET句柄即可<BR><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>
回复者:doggou 回复日期:2003-03-24 15:58:58
<br>内容:谢谢各位的回答,使菜鸟弟又增长的知识!<BR>不过分只能给一位,请大家不要见怪
<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 + -