《网络程序设计》
课程设计报告书
题 目:局域网文件传输与消息通信
专 业:网络工程
学 号:20091423
学生姓名:史政法
指导教师:魏宁
完成日期:2012年06月06日
一、 题目及要求
Window 程序设ZbuttonZstop IDC-RUTTONCONNECT
IDC EDIT MSG
IDC_MYIP
IDC PROGRESS SEND FILE
CStringm MsgSend
CIPAddressCtrE mMy^p €PrngressCh1ni_Prdgrcss
Update Ciiluinfr
nd All
IDCANCEL
Description: map to ClPAddres^Clrl member
图2 ——对话框中的控件对象定义相应的成员变量
编程思路:首先在对话框中输入要连接的IP地址,然后单击“启动”按钮,要连接的
主机也做相同的操作,两边都准备完事后,两台计算机就可以消息和文件的传输了。
单击“启动”按钮时,处理函数启动了监听线程来启动服务,主要的语句如下:
pThreadListen = : : AfxBeginThread (_ListenTcpThread , this);
点击“发送消息”按钮时,处理函数启动了消息发送线程来进行消息的传送,语句如下:
pThreadSendMsg = : : AfxBeginThread (_SendMsgThread, this);
当点击“传送文件”按钮时,处理函数启动了文件传输线程来进行文件传输,语句如下:
pThreadSendMsg = : : AfxBeginThread(_SendFileThread,this);
下面主要介绍一下要用到的三个线程和一个文件接收处理函数。首先要产生三个线程对
象:
CWinThread _ListenTcpThread;
CWinThread _SendFileThread ;
CWinThread _SendMsgThread;
三、系统详细设计
监听线程函数
UINT _ListenTcpThread(LPVOID lparam)
CFiletranDlg *pDlg=(CFiletranDlg *)lparam;
if(pDlg->StopServer==true) return -1;
CSocket sockSrvr;
pDlg->m_Potr=PORT;〃保存当前使用端口,用于关闭 int createSucceed=(pDlg->m_Potr);
if(createSucceed==0)
AfxMessageBox("_ListenTcpThread Create 错误 !"+pDlg->GetError(GetLastError())); return -1;
}
int listenSucceed=(); //开始监听
if(listenSucceed==0) {
AfxMessageBox("_ListenTcpThread Listen 错误 !"+pDlg->GetError(GetLastError())); return -1;
}
CSocket recSo;
SOCKADDR_IN client;
int iAddrSize=sizeof(client);
int acceptSucceed=(recSo,(SOCKADDR *)&client,&iAddrSize); // 接 受 连接并取得对方 IP
if(acceptSucceed==0)
{
AfxMessageBox("_ListenTcpThread Accept 错误 !"+pDlg->GetError(GetLastError())); return -1;
}
();// 关闭
char flag[FLAG]={0};
if((flag,FLAG)!=2)
{
return -1;
}
pDlg->m_type=flag[0];
if(pDlg->m_type=='D') return 0;
pThreadListen=::AfxBeginThread(_ListenTcpThread,pDlg); pDlg->ReceiveFileMsg(recSo,client);
return 0;
}
传送文件线程函数
UINT _SendFileThread(LPVOID lpa
局域网文件传输与消息发送 来自淘豆网m.daumloan.com转载请标明出处.