计算机网络应用设计实验报告Word格式.docx

上传人:b****5 文档编号:19950434 上传时间:2023-01-12 格式:DOCX 页数:39 大小:24.57KB
下载 相关 举报
计算机网络应用设计实验报告Word格式.docx_第1页
第1页 / 共39页
计算机网络应用设计实验报告Word格式.docx_第2页
第2页 / 共39页
计算机网络应用设计实验报告Word格式.docx_第3页
第3页 / 共39页
计算机网络应用设计实验报告Word格式.docx_第4页
第4页 / 共39页
计算机网络应用设计实验报告Word格式.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

计算机网络应用设计实验报告Word格式.docx

《计算机网络应用设计实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《计算机网络应用设计实验报告Word格式.docx(39页珍藏版)》请在冰豆网上搜索。

计算机网络应用设计实验报告Word格式.docx

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_

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 工作总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1