subject_24360.htm

来自「一些关于vc的问答」· HTM 代码 · 共 33 行

HTM
33
字号
<p>
序号:24360 发表者:对虾 发表日期:2002-12-12 09:29:25
<br>主题:线程函数中如何启动OnReceive()?如何调用OnConnect()返回值?
<br>内容:(1)我的程序需要在线程函数中启动重载的OnReceive,可是连同之后没有执行函数中的语句!!<BR>if(.........)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Socket.Create(0,SOCK_STREAM);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Socket.Connect(ip,port);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Socket.ShutDown(2);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Socket.Send(header1,16,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Socket.m_hSocket=INVALID_SOCKET;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Socket.AsyncSelect(FD_READ);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sleep(1000);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Socket.Close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>(2)我的程序需要使用OnConnect()的返回值,这样使用为什么不行?怎么使用对哪?<BR>     Socket.Create(0,SOCK_STREAM);<BR>&nbsp;&nbsp;&nbsp;&nbsp;Socket.Connect(ip,port);<BR>&nbsp;&nbsp;&nbsp;&nbsp;Socket.ShutDown(2);<BR>&nbsp;&nbsp;&nbsp;&nbsp;Socket.m_hSocket=INVALID_SOCKET;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Socket.AsyncSelect(FD_CONNECT);<BR>&nbsp;&nbsp;&nbsp;&nbsp;boolconnect=Socket3.m_bConnect;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Socket.Close();
<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-12 09:32:31
<br>内容:boolconnect=Socket3.m_bConnect;<BR>打错了!应该是:<BR>boolconnect=Socket.m_bConnect;<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-13 09:35:33
<br>内容:生成新类:<BR><BR>class CClient : public CAsyncSocket<BR>{…………}<BR><BR>定义:<BR>CClient Socket<BR><BR>Socket.Create(0,SOCK_STREAM,FD_CONNECT);<BR>Socket.Connect(ip,port);<BR>//Socket.m_hSocket=INVALID_SOCKET;<BR>Socket.AsyncSelect(FD_CONNECT); <BR>header[29]=Socket.m_bConnect;<BR>Socket.Close();<BR><BR>这里就是想把nErrorCode的值取出来。
<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-13 09:40:15
<br>内容:CClient Socket;<BR>ADDRESS ip_port;<BR>Socket.Create(0,SOCK_STREAM);<BR>Socket.Connect(ip_port.ip,ip_port.port);<BR>////////////////////////////////////////////////////<BR>if(header1[16]==1)//header1[16] the mark of stop<BR>{&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//Socket.ShutDown(2);<BR>&nbsp;&nbsp;&nbsp;&nbsp;header1[16]=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Socket.Send(header1,16,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//Socket.m_hSocket=INVALID_SOCKET;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Socket.AsyncSelect(FD_READ);<BR>)<BR>这里是想启动OnReceive进行接收数据。<BR>问题是OnReceive并没有执行!
<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-13 13:08:34
<br>内容:&nbsp;&nbsp; connect()是立即返回的函数,它仅是向端口发送一个消息,请求连接,然后立即返回。<BR>这时连接可能还没有被建立。判断连接是否建立,需要重载onConnect()函数,在该函数内判断连接是否被建立。
<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-13 17:11:38
<br>内容:我已经重载onConnect()函数,另外,系统启动该函数必须有比如谈出对话框这种事件发生吗?要不然从onConnect()带回的返回值总是0(没有执行),Socket.AsyncSelect(FD_CONNECT)好像不起作用!<BR><BR>Socket.Create();<BR>Socket.Connect(ip,port);<BR>//Socket.AsyncSelect(FD_CONNECT); //提请网络事件<BR>(*如果这里插入弹出对话框之类的事件发生就可以,否则不行!!)<BR>header[29]=Socket.m_bConnect;//想从这里取得onConnect()的返回值!<BR><BR>同样,没有弹出对话框之类的事件发生就无法调用OnReceive!<BR>2002-12-13 17:12:19

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?