2022年2022年计算机网络应用设计实验报告 .pdf
《2022年2022年计算机网络应用设计实验报告 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年计算机网络应用设计实验报告 .pdf(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、武汉大学计算机学院课程实验 (设计)报告课程名称:计算机网络应用设计专业、班:姓名:学号:学期:2010 年上学期名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 33 页 - - - - - - - - - 1 第二部分软件设计一、实验内容完成 FTP 客户端、 POP3客户端两个系统程序,以及一个应用程序。客户端操作系统为Windows XP 。FTP 程序要求具有图形化界面、上传、下载功能,鼓励实现断点续传功能,POP3 程序具有邮件接收、阅读、删除等基本功能。FTP
2、、POP3 程序使用socket 方式编程,从创建socket、建立 TCP连接开始,实现FTP、SMTP、POP3 协议的功能,不得调用第三方控件(可使用操作系统自身的API 函数) 。编程工具可以使用C#或 VC+。应用程序要求实现一个网上书店的基本功能,要求具有前端(用户)和后端(管理)功能,基于 Web 运行方式。前端具有浏览书目、购物车等功能,后端具有管理书目、基本统计功能。编程工具可以是 MS .NET(C#) 或者 J2EE 二选一,数据库可以是SQL Server、 DB2、 Oracle、 Mysql、 PostgreSQL之一。二、实验步骤与实验结果1. FTP 源程序说明
3、:本程序使用VC+编写,开发环境为VS2008 /* / 连接 FTP 服务器*/ void Cmfcftp3Dlg:OnBnClickedButton1() m_pInetSession=new CInternetSession(AfxGetAppName(),1,PRE_CONFIG_INTERNET_ACCESS); UpdateData(TRUE); try / 根据给出的参数连接到FTP服务器m_pFtpConnection=m_pInetSession-GetFtpConnection(m_host,m_username,m_password,m_port); if (m_pFtp
4、Connection != NULL) CString m_i; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 33 页 - - - - - - - - - 2 m_i= 连接成功 rn; m_ftpinfo +=m_i; UpdateData(FALSE); List(); catch (CInternetException * pEx) CString m_i; m_i= 连接 no 成功 rn; m_ftpinfo +=m_i; UpdateData(FALSE)
5、; TCHAR szError1024; if ( pEx-GetErrorMessage(szError,1024) m_i=(CString) szError; m_ftpinfo +=m_i; UpdateData(FALSE); else AfxMessageBox(There was an exception); pEx-Delete(); m_pFtpConnection=NULL; /* / 列出 FTP服务器上的所有文件*/ void Cmfcftp3Dlg:List() CString m_i; CString m_ii; CStringArray m_Dir; CFtpFi
6、leFind finder(m_pFtpConnection); BOOL bWorking=finder.FindFile(_T(*); while (bWorking) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 33 页 - - - - - - - - - 3 bWorking = finder.FindNextFile(); if ( finder.IsDots() ) continue; if (finder.IsDirectory() / 如果是目录。 m
7、_Dir.Add( finder.GetFileName(); else m_i=finder.GetFileName()+rn; for (int j=0;jn;j+) m_ii=t; m_ftpinfo=m_ftpinfo+m_ii; m_ftpinfo +=m_i; UpdateData(FALSE); finder.Close(); for(int i=0;im_Dir.GetSize();i+) n+; m_i=+m_Dir.GetAt(i)+rn; for (int j=1;jSetCurrentDirectory(m_Dir.GetAt(i); 名师资料总结 - - -精品资料欢
8、迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 33 页 - - - - - - - - - 4 List(); BOOL m_suc1=0; while(!m_suc1) m_suc1= m_pFtpConnection-SetCurrentDirectory(.); n-; 2. POP3 源程序说明:本程序是使用VC+ 编写,开发环境为VS2008,这里只贴了与实现相关的代码,界面部分的代码不在此描述了。MyPop3App.cpp 文件:BOOL CMyPop3App:InitInstance()
9、INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); / 将它设置为包括所有要在应用程序中使用的/ 公共控件类。InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinApp:InitInstance(); AfxEnableControlContainer(); SetRegistryKey(_T(应用程序向导生成的本地应用程序); WORD wVersionRequested; wVersionRequested
10、 = MAKEWORD(1, 1); int err = WSAStartup(wVersionRequested, &wsaData); /The Windows Sockets WSAStartup function initiates use of Ws2_32.dll by a process if (err != 0) return FALSE; if (LOBYTE(wsaData.wVersion) != 1 | HIBYTE(wsaData.wVersion) != 1) return FALSE; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - -
11、- - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 33 页 - - - - - - - - - 5 CMyPop3Dlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse = IDOK) / TODO: 在此放置处理何时用/ “ 确定 ” 来关闭对话框的代码 else if (nResponse = IDCANCEL) / TODO: 在此放置处理何时用/ “ 取消 ” 来关闭对话框的代码 / 由于对话框已关闭,所以将返回FALSE 以便退出应用程序,/
12、而不是启动应用程序的消息泵。return FALSE; int CMyPop3App:ExitInstance() / TODO: 在此添加专用代码和/或调用基类WSACleanup(); return CWinApp:ExitInstance(); /* / 自定义的通过套接字发送数据函数*/ int CMyPop3Dlg:Send(SOCKET& sock, TCHAR const * buf, int len, int flag) int bytes(0), count(0); while ( count len - 2 ) return offset; rs = recv(m_sock
13、, buf + offset, len - offset, flags); if ( rs 0 ) /* error occur */ return -1; offset += rs; bufoffset = 0; while ( strstr(buf, rn.rn) = (char*)NULL ); return offset; /* / 从服务器对 LIST 命令的返回信息中,获取邮件总数*/ int CMyPop3Dlg:getMailSum(TCHAR* responseToLIST) int sum = 0; TCHAR* p = strstr(responseToLIST, rn)
14、; if ( p = NULL ) return sum; p = strstr(p + 2, rn); if ( p = NULL ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 33 页 - - - - - - - - - 7 return sum; while ( (p = strstr(p + 2, rn) != NULL ) sum+; return sum; /* / 从服务器返回的邮件内容中抽取邮件标题*/ bool CMyPop3Dlg:GetSubj
15、ect(TCHAR* subject, TCHAR const * buf) TCHAR const * p = strstr(buf, Subject: ); if ( p = NULL ) return false; p = p + 9; for (int i = 0; i EnableWindow(TRUE); GetDlgItem(IDC_BUTTON2)-EnableWindow(FALSE); closesocket(m_sock); return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理
16、- - - - - - - 第 8 页,共 33 页 - - - - - - - - - 8 /* / 点击登录按钮*/ void CMyPop3Dlg:OnLogin() / TODO: 在此添加控件通知处理程序代码UpdateData(TRUE); if (m_serverAddr.IsEmpty() SetDlgItemText(IDC_STATIC_ERRORINFO, _T(请填写 Pop3 服务器地址 ); return; else if (m_portNo.IsEmpty() SetDlgItemText(IDC_STATIC_ERRORINFO, _T(请填写端口号); ret
17、urn; else if (m_userName.IsEmpty() SetDlgItemText(IDC_STATIC_ERRORINFO, _T(请填写您的用户名); return; else if (m_passwd.IsEmpty() SetDlgItemText(IDC_STATIC_ERRORINFO, _T(请填写您的邮箱密码); return; GetDlgItem(IDC_BUTTON1)-EnableWindow(FALSE); GetDlgItem(IDC_BUTTON2)-EnableWindow(TRUE); AfxBeginThread(connToServerTh
18、read, this);return; /* / 点击注销按钮*/ void CMyPop3Dlg:OnLogoff() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 33 页 - - - - - - - - - 9 / TODO: 在此添加控件通知处理程序代码TCHAR sendbuf10, recvbuf128; memset(recvbuf, 0, sizeof(recvbuf); strcpy(sendbuf, QUIT rn); / 发送 QUIT 消息,结束
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年计算机网络应用设计实验报告 2022 计算机网络 应用 设计 实验 报告
限制150内