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