计算机网络应用设计实验报告Word格式文档下载.docx
- 文档编号:16245922
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:39
- 大小:24.57KB
计算机网络应用设计实验报告Word格式文档下载.docx
《计算机网络应用设计实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《计算机网络应用设计实验报告Word格式文档下载.docx(39页珍藏版)》请在冰豆网上搜索。
try
{
//根据给出的参数连接到FTP服务器
m_pFtpConnection=m_pInetSession->
GetFtpConnection(m_host,m_username,m_password,m_port);
if(m_pFtpConnection!
=NULL)
{
CStringm_i;
m_i="
连接成功\r\n"
;
m_ftpinfo+=m_i;
UpdateData(FALSE);
List();
}
}
catch(CInternetException*pEx)
CStringm_i;
m_i="
连接no成功\r\n"
m_ftpinfo+=m_i;
UpdateData(FALSE);
TCHARszError[1024];
if(pEx->
GetErrorMessage(szError,1024))
m_i=(CString)szError;
else
AfxMessageBox("
Therewasanexception"
);
pEx->
Delete();
m_pFtpConnection=NULL;
}
/*********************************************************************
//列出FTP服务器上的所有文件
****************************************************************************/
List()
CStringm_i;
CStringm_ii;
CStringArraym_Dir;
CFtpFileFindfinder(m_pFtpConnection);
BOOLbWorking=finder.FindFile(_T("
*"
));
while(bWorking)
bWorking=finder.FindNextFile();
if(finder.IsDots())
continue;
if(finder.IsDirectory())//如果是目录。
{
m_Dir.Add(finder.GetFileName());
else
m_i=finder.GetFileName()+"
\r\n"
for(intj=0;
j<
n;
j++)
{
m_ii="
\t"
m_ftpinfo=m_ftpinfo+m_ii;
}
finder.Close();
for(inti=0;
i<
m_Dir.GetSize();
i++)
n++;
["
+m_Dir.GetAt(i)+"
]"
+"
for(intj=1;
m_ii="
m_ftpinfo=m_ftpinfo+m_ii;
BOOLm_suc=0;
while(!
m_suc)
m_suc=m_pFtpConnection->
SetCurrentDirectory(m_Dir.GetAt(i));
List();
BOOLm_suc1=0;
while(!
m_suc1)
m_suc1=m_pFtpConnection->
SetCurrentDirectory("
.."
n--;
2.POP3源程序
本程序是使用VC++编写,开发环境为VS2008,这里只贴了与实现相关的代码,界面部分的代码不在此描述了。
MyPop3App.cpp文件:
BOOLCMyPop3App:
InitInstance()
INITCOMMONCONTROLSEXInitCtrls;
InitCtrls.dwSize=sizeof(InitCtrls);
//将它设置为包括所有要在应用程序中使用的
//公共控件类。
InitCtrls.dwICC=ICC_WIN95_CLASSES;
InitCommonControlsEx(&
InitCtrls);
CWinApp:
InitInstance();
AfxEnableControlContainer();
SetRegistryKey(_T("
应用程序向导生成的本地应用程序"
WORDwVersionRequested;
wVersionRequested=MAKEWORD(1,1);
interr=WSAStartup(wVersionRequested,&
wsaData);
//TheWindowsSocketsWSAStartupfunctioninitiatesuseofWs2_32.dllbyaprocess
if(err!
=0)
returnFALSE;
if(LOBYTE(wsaData.wVersion)!
=1||HIBYTE(wsaData.wVersion)!
=1)
CMyPop3Dlgdlg;
m_pMainWnd=&
dlg;
INT_PTRnResponse=dlg.DoModal();
if(nResponse==IDOK)
//TODO:
在此放置处理何时用
//“确定”来关闭对话框的代码
elseif(nResponse==IDCANCEL)
//TODO:
//“取消”来关闭对话框的代码
//由于对话框已关闭,所以将返回FALSE以便退出应用程序,
//而不是启动应用程序的消息泵。
returnFALSE;
intCMyPop3App:
ExitInstance()
//TODO:
在此添加专用代码和/或调用基类
WSACleanup();
returnCWinApp:
ExitInstance();
/**********************************************************************
//自定义的通过套接字发送数据函数
*************************************************************************/
intCMyPop3Dlg:
Send(SOCKET&
sock,TCHARconst*buf,intlen,intflag)
intbytes(0),count(0);
while(count<
len)//循环执行send函数,直至数据发送完毕为止。
bytes=send(sock,buf+count,len-count,flag);
if(bytes==-1||bytes==0)
return-1;
count+=bytes;
}
returncount;
//自定义的接收POP3发送的数据的函数
Pop3Recv(SOCKET&
m_sock,TCHAR*buf,intlen,intflags)
intrs;
intoffset=0;
do
if(offset>
len-2)
returnoffset;
rs=recv(m_sock,buf+offset,len-offset,flags);
if(rs<
0)/*erroroccur*/
offset+=rs;
buf[offset]='
\0'
}while(strstr(buf,"
\r\n.\r\n"
)==(char*)NULL);
returnoffset;
//从服务器对LIST命令的返回信息中,获取总数
getMailSum(TCHAR*responseToLIST)
intsum=0;
TCHAR*p=strstr(responseToLIST,"
if(p==NULL)
returnsum;
p=strstr(p+2,"
while((p=strstr(p+2,"
))!
=NULL)
sum++;
returnsum;
//从服务器返回的容中抽取标题
***********************************************************************************/
boolCMyPop3Dlg:
GetSubject(TCHAR*subject,TCHARconst*buf)
TCHARconst*p=strstr(buf,"
Subject:
"
returnfalse;
p=p+9;
for(inti=0;
i<
32;
i++)
if(p[i]=='
\r'
||p[i]=='
\n'
)
subject[i]='
break;
subject[i]=p[i];
returntrue;
//登录失败时的善后处理(关闭套接字、禁用注销按钮、启用登录按钮)
loginFail()
GetDlgItem(IDC_BUTTON1)->
EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON2)->
EnableWindow(FALSE);
closesocket(m_sock);
return0;
//点击登录按钮
voidCMyPop3Dlg:
OnLogin()
在此添加控件通知处理程序代码
if(m_serverAddr.IsEmpty())
SetDlgItemText(IDC_STATIC_ERRORINFO,_T("
请填写Pop3服务器地址"
return;
elseif(m_portNo.IsEmpty())
请填写端口号"
elseif(m_userName.IsEmpty())
请填写您的用户名"
elseif(m_passwd.IsEmpty())
请填写您的密码"
AfxBeginThread(connToServerThread,this);
return;
//点击注销按钮
OnLogoff()
TCHARsendbuf[10],recvbuf[128];
memset(recvbuf,0,sizeof(recvbuf));
strcpy(sendbuf,"
QUIT\r\n"
//发送QUIT消息,结束本次会话。
send(m_sock,sendbuf,strlen(sendbuf),0);
intrt=recv(m_sock,recvbuf,sizeof(recvbuf),0);
//显示服务器返回的信息。
m_CmdInfo+="
\r\nResponsetoQuit:
m_CmdInfo+=recvbuf;
SetDlgItemText(IDC_EDIT6,m_CmdInfo);
if(rt<
=0||strncmp(recvbuf,"
+OK"
3)!
=0)
SetDlgItemText(IDC_STATIC_ERRORINFO,"
注销失败!
"
loginFail();
SetDlgItemText(IDC_STATIC_ERRORINFO,"
注销成功!
//点击收取按钮
OnReceiveLetters()
AfxBeginThread(recvLetterThread,this);
//连接服务器线程
UINTCMyPop3Dlg:
connToServerThread(LPVOIDlpVoid)
CMyPop3Dlg*pthis=(CMyPop3Dlg*)lpVoid;
pthis->
m_sock=socket(AF_INET,SOCK_STREAM,0);
//创建流式套接字。
//获取pop3服务器的IP地址。
structhostent*p;
if((p=gethostbyname(pthis->
m_serverAddr))==NULL)
pthis->
loginFail();
return1;
TCHARserverIP[100];
sprintf(serverIP,"
%u.%u.%u.%u"
(unsignedchar)p->
h_addr_list[0][0],
h_addr_list[0][1],
h_addr_list[0][2],
h_addr_list[0][3]);
//创建一个SOCKADDR_IN
SOCKADDR_INsockaddr;
sockaddr.sin_family=AF_INET;
sockaddr.sin_port=htons(atoi((LPCSTR)(LPCTSTR)pthis->
m_portNo));
sockaddr.sin_addr.S_un.S_addr=inet_addr(serverIP);
//连接到服务器
if(0!
=connect(pthis->
m_sock,(SOCKADDR*)&
sockaddr,sizeof(SOCKADDR)))
SetDlgItemText(IDC_STATIC_ERRORINFO,_T("
连接服务器失败。
输入是否有误?
//检查服务器返回的信息。
TCHARbuf[128];
memset(buf,0,sizeof(buf));
intreturnval(0);
returnval=recv(pthis->
m_sock,buf,sizeof(buf),0);
if(returnval<
=0||strncmp(buf,"
//保存服务器传回来的信息。
m_CmdInfo+="
\r\nResponsetoConn:
m_CmdInfo+=buf;
SendMessage(WM_CONNSERVER_SUCX,0,0);
/****************************************************************************
//连接服务器成功的消息响应函数
LRESULTCMyPop3Dlg:
login(WPARAMwParam,LPARAMlParam)
//显示服务器传回来的信息
SetDlgItemText(IDC_EDIT6,m_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 应用 设计 实验 报告