计算机网络大作业
计算机网络大作业
专业: 班级: 姓名: 学号:
一、介绍
该通信软件是基于C/S模式开发,是用MFC的WinSock编程原理。该应用程序的技术主要有一下几点:
1、从CAsyncSocket类派生出自己所需要的WinSock类 2、WinSock类与应用程序框架之间的关系 3、流式套接字的使用 4、网络事件
CAsyncSocket类是在很底程度上对Winsock API的封装,他提供的低级接口几乎与WinSock API的函数调用直接对应,CAsyncSocket类是从CObject类派生而来。
所谓套接字(socket)是一种网络变成接口,它是对通信短点的一种抽象,提供了一种发送和接收数据的机制。套接字是通信的基石,一个套接字是通信的一端。在通信的任何一端上,用户可以找到与套接字对应的一个套接字名字,每一个正在被使用的套接字都有它的类型和与其相关的进程。套接字存在于通信域中,通信域是为了处理一般的通过套接字通信的线程而引进的一种抽象概念。
二、整体流程图
1、启动与发送 开始启动服务器,使其处于侦听状态启动客户机,与服务器进行连接发送数据是否发送成功否提示:发送失败!是将数据显示在 发送的数据列表框中 2、接收 开始接收数据的事件被触发显示受到的数据到 接收的数据 列表框中 二、主要代码
1、创建派生的套接字类之后,向该套接字中添加一个成员变量,用作指向父对话框口德指针。
//设置CTalkDlg类的指针
void CMySocket::SetParent(CTalkDlg *pDlg) { //设置成员变量 m_pDlg=pDlg; }
2、接收、连接、关闭是近啊处理函数
//事件处理函数
void CMySocket::OnAccept(int nErrorCode) { if(nErrorCode==0) //call the dialog's OnAccept function m_pDlg->OnAccept(); }
//事件处理函数
void CMySocket::OnConnect(int nErrorCode) { if (nErrorCode==0) m_pDlg->OnConnect(); }
void CMySocket::OnRecive(int nErrorCode) { if(nErrorCode==0)
m_pDlg->OnReceive(); }
void CMySocket::OnClose(int nErrorCode) { if(nErrorCode==0) m_pDlg->OnClose(); }
3、因为对话框需要两个套接字,所以要向对话框类(CTalkDlg)中添加两个成员变量。
public:
CMySocket m_sConnectSocket; CMySocket m_sListenSocket;
4、为对话框中所有的变量添加初始化代码。
BOOL CTalkDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add \ // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
} } // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here //初始化控制变量
m_cmbType.SetCurSel(1); m_strServName=\ m_nServPort=1000; //更新控制变量 UpdateData(FALSE); //设置套接字成员的CTalkDlg类指针 m_sListenSocket.SetParent(this); m_sConnectSocket.SetParent(this); return TRUE; // return TRUE unless you set the focus to a control }
5、建立客户机与服务器之间的连接
void CTalkDlg::OnBinConnect() { // TODO: Add your control notification handler code here //从对话框中取出数据 UpdateData(TRUE); //禁用链接和类型相关控件 GetDlgItem(IDC_BIN_CONNECT)->EnableWindow(FALSE); GetDlgItem(IDC_EDIT_SERVNAME)->EnableWindow(FALSE); GetDlgItem(IDC_EDIT_SERVPORT)->EnableWindow(FALSE); GetDlgItem(IDC_STATIC_SERVNAME)->EnableWindow(FALSE); GetDlgItem(IDC_STATIC_SERVPORT)->EnableWindow(FALSE); GetDlgItem(IDC_COMBO_TYPE)->EnableWindow(FALSE); //判断当前是客户端还是服务器 if(m_cmbType.GetCurSel()==0) { //服务器 //创建用于设置端口绑定的套接字 m_sListenSocket.Create(m_nServPort); //开始侦听请求链接 m_sListenSocket.Listen(); } else { //客户机 //创建一个默认的套接字 m_sConnectSocket.Create(); //发出链接请求 m_sConnectSocket.Connect(m_strServName,m_nServPort); }
…… 此处隐藏:871字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]2021年北京上半年临床医学检验技师生物
- [实用模板]SAP GUI 7.10客户端安装配置文档
- [实用模板]2001年临床执业医师资格考试综合笔试试
- [实用模板]36机场工作实用英语词汇总结
- [实用模板](一)社会保险稽核通知书
- [实用模板]安全教育主题班会材料
- [实用模板]濉溪县春季呼吸道传染病防控应急演练方
- [实用模板]长沙房地产市场周报(1.30-2.3)
- [实用模板]六年级数学上册典中点 - 图文
- [实用模板]C程序设计(红皮书)习题官方参考答案
- [实用模板]中国证监会第一届创业板发行审核委员会
- [实用模板]桥梁工程复习题
- [实用模板]2011学而思数学及答案
- [实用模板]初中病句修改专项练习
- [实用模板]监理学习知识1 - 图文
- [实用模板]小机灵杯四年级试题
- [实用模板]国贸专业毕业论文模板
- [实用模板]教育学概论考试练习题-判断题4
- [实用模板]2015届高考英语一轮复习精品资料(译林
- 00Nkmhe_市场营销学工商管理_电子商务_
- 事业单位考试法律常识
- 诚信教育实施方案
- 吉大小天鹅食品安全检测箱方案(高中低
- 房地产销售培训资料
- 高一地理必修1复习提纲
- 新概念英语第二册lesson_1_练习题
- 证券公司内部培训资料
- 小学英语时间介词专项练习
- 新世纪英语专业综合教程(第二版)第1册U
- 【新课标】浙教版最新2018年八年级数学
- 工程建设管理纲要
- 外研版 必修一Module 4 A Social Surve
- Adobe认证考试 AE复习资料
- 基于H.264AVC与AVS标准的帧内预测技术
- 《食品检验机构资质认定管理办法》(质
- ABB变频器培训课件
- (完整版)小学说明文阅读练习题及答案
- 深思洛克(SenseLock) 深思IV,深思4,深
- 弟子规全文带拼音




