📄 subject_19511.htm
字号:
<p>
序号:19511 发表者:hf 发表日期:2002-10-29 14:44:46
<br>主题:哪位高手帮忙指点一下,看看我的代码有什么错误
<br>内容:各位先生:<BR> 我也是VChlep论坛的一个普通会员,目前我在帮实验室做一个网络存取显示的程序,这个程序主要是从工控机(轻核聚变中加热等离子体的微波天线控制机器)上取的一个数据文件,然后显示出来。我写了两个进程,但始终没办法连上。麻烦你指教一下。程序的要点如下:<BR> 客户程序先连上服务器程序,然后向服务器发送一个文件名,服务器根据文件名进行查找,如果存在,则先发送文件的长度,再发送文件数据,如果不存在,则发送长度为2的“NO”字符。客户程序接受文件后保存在本地上,在利用显示模块显示。<BR> <BR>客户进程<BR>void CMainFrame::OnShotnum() <BR>{<BR> // TODO: Add your command handler code here<BR> char filename[60];<BR> <BR> int i;<BR> if(dlg.DoModal()==IDOK)<BR> {<BR> FILE *fp;<BR> <BR> sprintf(filename,"c:\\lhcd\\data\\S%ld.txt",dlg.m_ShotNum);<BR> fp=fopen(filename, "r");<BR> for (i=0;i<60;i++)<BR> { CLHCDApp *app=(CLHCDApp *)AfxGetApp();<BR> app->netfilename[i]=filename[i];<BR> }<BR> if(fp==NULL)<BR> {<BR> <BR> <BR> AfxBeginThread(ClientUrlThreadProc, GetSafeHwnd(), THREAD_PRIORITY_NORMAL);<BR> <BR> return;<BR> }<BR> fclose(fp);<BR> // AfxBeginThread(ClientUrlThreadProc, GetSafeHwnd(), THREAD_PRIORITY_NORMAL);<BR> CWinApp *pAfx=AfxGetApp();<BR> <BR> pAfx->OpenDocumentFile(filename);<BR> }<BR>//////////////////////////////////////////////////////////////////////////////////////////////<BR> <BR>UINT ClientUrlThreadProc(LPVOID pParam)<BR>{ <BR> CSockAddr sbServer=CSockAddr("202.127.205.153",1020);<BR> try<BR> {<BR> CBlockSocket mysocket;<BR> mysocket.Create();<BR> mysocket.Connect(sbServer);<BR> CLHCDApp *app;<BR> app=(CLHCDApp *)AfxGetApp( ); <BR> char *DataBuf;<BR> char filelen[20];<BR> int uiFileLen;<BR> mysocket.Write(app->netfilename,60,10);<BR> int len;<BR> len=0;<BR> len=mysocket.Read(filelen,20,10);<BR> if (len==2)<BR> {<BR> ::AfxMessageBox("服务器上数据文件不存在");<BR> }<BR> else<BR> {<BR>uiFileLen=atoi(filelen);<BR>mysocket.Read(DataBuf,uiFileLen,100);<BR>CFile *file=new CFile();<BR>file->Open(app->netfilename,CFile::modeCreate|CFile::modeWrite);<BR>file->WriteHuge(DataBuf,uiFileLen);<BR>file->Close();<BR> }<BR> }<BR> catch (CBlockSocketException*pe)<BR> <BR> {pe->Delete();<BR> ::AfxMessageBox("发送炮号失败");<BR> }<BR> PostMessage(NULL,WM_THREADFINISHED,0,0);<BR> return 0;<BR> }<BR>////////////////////////////////////////////////////////////////////////<BR>LRESULT CMainFrame::OnThreadFinished(WPARAM wParam, LPARAM lParam)<BR>{<BR> CLHCDApp *app=(CLHCDApp *)AfxGetApp();<BR> <BR> CWinApp *pAfx=AfxGetApp();<BR> pAfx->OpenDocumentFile(app->netfilename);<BR> return 0;<BR>}<BR>//////////////////////////////////////////////////////////////////////////<BR>服务器进程<BR> <BR>UpdateData(TRUE);<BR> CSockAddr saServer(INADDR_ANY,1020);<BR> try{<BR> <BR> glisten.Create();<BR> glisten.Bind(saServer);<BR> <BR> glisten.Listen();<BR> AfxBeginThread(ServerThreadProc,NULL);<BR> <BR> }<BR> catch (CBlockSocketException *e)<BR> { <BR> glisten.Cleanup();<BR> e->Delete();<BR> }<BR>GetDlgItem(IDC_BUTTON2)->EnableWindow(FALSE);<BR>GetDlgItem(IDC_MINBUTTON)->EnableWindow(TRUE);<BR>GetDlgItem(IDOK)->EnableWindow(FALSE);<BR>}<BR> <BR> <BR>//////////////////////////////////////////////////////////////////<BR>UINT ServerThreadProc(LPVOID pParam)<BR>{<BR> CSockAddr saClient;<BR> CBlockSocket sConnect;<BR> try {<BR> <BR> if(!glisten.Accept(sConnect,saClient)) <BR> <BR> {<BR> return 0;<BR> }<BR> char filename[60];<BR> sConnect.Read(filename,60,10);<BR> bool bfileexist;<BR> CFileFind filefind;<BR> bfileexist=filefind.FindFile(filename,0);<BR> <BR> if (bfileexist)<BR> <BR> {<BR> CFile *file=new CFile();<BR> file->Open(filename,CFile::modeRead|CFile::shareDenyNone);<BR> UINT uiFileLen;<BR> uiFileLen=file->GetLength();<BR> char *DataBuf;<BR> char filelen[20];<BR> itoa(uiFileLen,filelen,10);<BR> DataBuf=new char[uiFileLen];<BR> file->ReadHuge(DataBuf,uiFileLen);<BR> sConnect.Write(filelen,20,10);<BR> sConnect.Write(DataBuf,uiFileLen,100);<BR> <BR> }<BR> else<BR> {<BR> char filelen[2];<BR> sprintf(filelen,"NO",2);<BR> sConnect.Write(filelen,2,10);<BR> //::AfxMessageBox("数据文件不存在");<BR> }<BR> }<BR> catch (CBlockSocketException *e)<BR> { <BR> <BR> e->Delete();<BR> }<BR>AfxBeginThread(ServerThreadProc,NULL);<BR>sConnect.Close();<BR>sConnect.Cleanup();<BR> <BR><BR> return 0;<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-10-29 16:38:52
<br>内容:CBlockSocket是什么东东?从哪个类派生的?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:hf 回复日期:2002-10-29 16:57:47
<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-10-29 16:59:49
<br>内容:嗯,是挺菜的。MFC里找不到这个类。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:hf 回复日期:2002-10-29 17:02:21
<br>内容:这是从CSocket继承来的,不是MFC里的。
<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-10-29 17:08:13
<br>内容:CSocket是MFC的类,所以我才问你是从哪个类派生的呀!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -