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

📄 subject_62835.htm

📁 vc
💻 HTM
字号:
<p>
序号:62835 发表者:mwh 发表日期:2003-11-28 22:58:59
<br>主题:求救::线程及套接字问题。重谢
<br>内容:我使用CSocket异步模式接收、发送数据套接字在窗口界面主线程中产生,但我在主线程中发送数据没有问题,而在由主线程建立的一个用户线程(cthread)中发送数据却出现问题,DEBUG调试指针指向下面函数,请问是什么原因?<BR>void CAsyncSocket::AssertValid() const<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;CObject::AssertValid();<BR>&nbsp;&nbsp;&nbsp;&nbsp;ASSERT(m_hSocket == INVALID_SOCKET || CAsyncSocket::FromHandle(m_hSocket) != NULL);<BR>}<BR><BR><BR>相关程序如下:<BR>主线程:<BR><BR>//创建套接字<BR>BOOL CGzxfDlg::Createsocket()<BR>{<BR>&nbsp;&nbsp;m_setup.getdata();<BR>&nbsp;&nbsp;cti.sin_addr.s_addr = inet_addr(m_setup.m_data.m_servaddr);<BR>&nbsp;&nbsp;cti.sin_family=AF_INET;<BR>&nbsp;&nbsp;cti.sin_port=htons(m_setup.m_data.m_port);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;if(!(m_srvsocket = new CMysocket))&nbsp;&nbsp;return FALSE;<BR>&nbsp;&nbsp;m_srvsocket-&gt;SetParent(this);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;if(!(m_srvsocket-&gt;Create()))&nbsp;&nbsp;return FALSE;<BR>&nbsp;&nbsp;m_srvsocket-&gt;AsyncSelect(FD_READ|FD_CLOSE|FD_CONNECT);<BR><BR>&nbsp;&nbsp;if(!(m_socketfile = new CSocketFile(m_srvsocket))) return FALSE; <BR>&nbsp;&nbsp;if(!(m_Rxarch =new CArchive(m_socketfile,CArchive::load))) return FALSE;<BR>&nbsp;&nbsp;if(!(m_Txarch =new CArchive(m_socketfile,CArchive::store))) return FALSE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;return TRUE;<BR>}<BR><BR>//向服务器发包<BR>void CGzxfDlg::sendpackage (short&nbsp;&nbsp;&nbsp;&nbsp;commandtype,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;short&nbsp;&nbsp;&nbsp;&nbsp;receindex,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short&nbsp;&nbsp;&nbsp;&nbsp;sendindex,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CString&nbsp;&nbsp;serial,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;&nbsp;&nbsp;&nbsp; handle,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;&nbsp;content,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;&nbsp;confirm1)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;&nbsp; sendstring;<BR>&nbsp;&nbsp;&nbsp;&nbsp;sendstring.Format(&#34;%d;%d;%d;%s;%d;%s;%s.&#34;,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;commandtype,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;receindex,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sendindex,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serial,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handle,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;confirm1);<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;m_Txarch-&gt;WriteString(sendstring);<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_Txarch-&gt;Flush();<BR>}<BR><BR><BR>用户线程Cthread:<BR>CThread::CThread()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;//获得主线程窗口界面指针<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_threaddlg=(CGzxfDlg *) AfxGetApp()-&gt;GetMainWnd();<BR>}<BR><BR>在发送时语句为<BR>m_threaddlg-&gt;sendpackage(p++,0, 0,&#34;0&#34;,0,&#34;NULL&#34;,NO_CONFIRM);<BR><BR>请各位高手多多帮忙,必有重谢!!!<BR><BR><BR><BR><BR><BR>2003-11-29 13:02:23

⌨️ 快捷键说明

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