⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_19964.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:19964 发表者:海风 发表日期:2002-11-01 16:18:03
<br>主题:Connect()返回值总为0,但OnConncet()执行
<br>内容:Conn=pm_clientSocket-&gt;Connect(pm_clientSocket-&gt;Loginfo.m_SrvAd,<BR>pm_clientSocket-&gt;Loginfo.m_Port);<BR>&nbsp;&nbsp;&nbsp;&nbsp; if(Conn!=0)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(pm_clientSocket-&gt;m_bConnected==FALSE)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;<BR>//每次都会执行到之里AfxMessageBox("连接失败!");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR><BR>然后去执行 CMyAsyncSocket::OnConnect(int nErrorCode)<BR>执行后发送数据, 发完数据后返回执行 AfxMessageBox("连接失败!");<BR>如果我的端口号不对,地址不对&nbsp;&nbsp;执行不执行CMyAsyncSocket::OnConnect之后操作<BR>但 仍会执行&nbsp;&nbsp;AfxMessageBox("连接失败!");<BR>Conn的值总是为0为什么?<BR>不是说&nbsp;&nbsp;连接成功后才会执行 OnConnect(int nErrorCode),执行了这个函数应该连接<BR>就已经成功了 就应该返回非0值&nbsp;&nbsp;书上是这么说的<BR>可是为何的返回值总为0&nbsp;&nbsp;<BR>不明<BR>不明<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-11-01 16:28:01
<br>内容:在调用Connect后,无论是否连接成功都会响应OnConnect。所不同的是OnConnect的参数:int nErrorCode,若连接成功,该值为0。另外还有一个要注意的地方:WIN2000和WIN98的不同,WIN98在一次调用Connect后会反复响应OnConnect,而WIN2000只会响应一次。
<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-11-01 16:52:07
<br>内容:你的pm_clientSocket是基于CAsyncSocket,非阻塞(异步),马上返回0,其实那时你还没connect上(你调用getlasterror()会发现错误为ERR_WOULDBLOCK);你应该用基于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>
回复者:海风 回复日期:2002-11-01 17:39:46
<br>内容:我用的确是CAsyncSocket,<BR>每次都是返回 ERR_WOULDBLOCK 错误 <BR>怎么把CAsyncSocket设成阻塞? <BR>我该如何的判断连接是否成功?<BR>我先Sleep(5000)<BR>后用<BR>pm_clientSocket-&gt;m_bConnected<BR>判断连接是否成功好像也是不行的<BR>一般这如何处理CAsyncSocket,非阻塞(异步 )的Connect() 
<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>回复者:中国娃娃 回复日期:2002-11-04 13:59:16
<br>内容:我已经告诉你怎么做了。<BR><BR>不用设置成什么阻塞模式的。你只要从CAsyncSocket派生一个类,并重载OnConnect就可以了。连接成功时OnConnect的参数是0,否则是非0。
<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 + -