欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    实验三:编写简单的客户服务器程序.doc

    • 资源ID:4142168       资源大小:136KB        全文页数:5页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    实验三:编写简单的客户服务器程序.doc

    实验三:编写简单的客户/服务器程序3.1实验目的熟悉客户/服务器交互模型,学习简单的socket编程方法,对网络通信和Socket编程模式要有一定的了解。3.2实验要求要求编写一个简单的客户/服务器程序,实现客户与服务器之间信息的传输,客户端向服务器发送时间、日期请求,服务器返回响应的消息,本实验使用的是CSocket类编程。3.3实验原理客户/服务器模型是互联网应用软件交互过程中最常用、最重要的模型。客户和服务器分别指两个应用程序,客户向服务器发送请求,服务器做出响应。客户机发送请求时,可能出现多个请求信息同时到达服务器的情况,所以就要求服务器具备处理多个并发请求的能力。TCP/IP互联网中,服务器程序通常使用协议或协议的端口号作为自己的特定标识。服务器启动后,在本地主机注册自己使用的端口号,客户端访问某服务时,可以通过与服务器使用的TCP端口建立连接(或直接向服务器程序使用的UDP端口发送信息)来实现。CAsyncSocket是一个异步非阻塞Socket封装类,而CSocket类是CAsyncSocket 类的派生类,它在继承了CAsyncSocket类的所有函数的同时提供了比CAsyncSocket类更高层的网络编程接口。本实验选用的是CSocket类编程。3.4实验内容 3.4.1客户端设计实验步骤 (1)在VC+6.0环境中进行界面设计,定义控件变量图1:客户端界面(2)初始化界面,并创建套接字clientsock, SOCKET s; s=:socket(AF_INET,SOCK_STREAM,0);: WSAAsyncSelect(s,this->m_hWnd,WM_SOCKET, FD_READ);(3) 在实验中使用了WSAAsyncSelect();它是基于消息机制的,在void CTCPDlg:OnSocket(WPARAM wParam,LPARAM lParam)处理网络事件类型,FD_READ表示应用程序想要接收有关是否可读的通知,以便读入数据,下面是读取服务器日期的主要代码,读取时间的代码类似,就不再列举:SYSTEMTIME dateServer; recv(s,(char *)&dateServer,sizeof(SYSTEMTIME),MSG_PEEK); CString str1, str2; str1.Format("%2d-%2d-%2d",dateServer.wYear,dateServer.wMonth,dateServer.wDay);GetDlgItem(IDC_EDIT1)->SetWindowText(str);(4)双击“连接”按钮并编辑代码,实现把Edit控件中输入的数值读取到已经定义好的控件变量中,并与指定IP地址、端口号的服务器建立连接。主要的实现代码如下(有省略):GetDlgItem(IDC_ADDR)->GetWindowText(str);/获取Edit中的输入值GetDlgItem(IDC_PORT)->GetWindowText(str1);/填充套接字结构port=atoi(str1.GetBuffer(1);addr.sin_family=AF_INET;addr.sin_addr.S_un.S_addr=inet_addr(str.GetBuffer(1);addr.sin_port=ntohs(port);/建立连接:connect(s,(sockaddr*)&addr,sizeof(addr)(5)与服务器建立连接后,下一步就是要发送数据,双击“请求命令”按钮并编辑代码:GetDlgItem(IDC_SENDTEXT)->GetWindowText(str);/获取输入的命令if(str="")MessageBox("发送的信息不能为空!");else:send(s,str.GetBuffer(1),sizeof(str),0);/不为空时就发送(6)closesocket(),关闭套接字clientsock,结束TCP对话。3.4.2服务器端设计实验步骤(1)在VC+6.0环境中进行界面设计,定义控件变量图2:服务器端界面(2)初始化界面并创建流式套接字s/初始化Listbox:DWORD dwStyle;dwStyle = m_list.GetStyle();/列表类型dwStyle |= LVS_EX_GRIDLINES |LVS_EX_FULLROWSELECT |LVS_SHOWSELALWAYS ; /绘制表格 选择整行m_list.SetExtendedStyle(dwStyle);/扩展类型 m_list.InsertColumn(0,"日期");/插入一列:m_list.SetColumnWidth(0,80);/下面可以根据自己的需要插入列m_list.InsertColumn(1,"时间");/插入一列:addr.sin_family=AF_INET;addr.sin_port=htons(80);addr.sin_addr.S_un.S_addr=INADDR_ANY;s=:socket(AF_INET,SOCK_STREAM,0);(3)调用bind()函数,将套接字与本地地址连接:bind(s,(sockaddr*)&addr,sizeof(addr);(4)调用Listen()函数侦听连接请求,通知TCP,服务器准备好连接:listen(s,5);/是套接字,5是连接的最大数目:WSAAsyncSelect(s,this->m_hWnd,WM_SOCKET,FD_ACCEPT|FD_READ); (5)在void CTCPDlg:OnSocket(WPARAM wParam,LPARAM lParam)处理激发的网络事件switch (lParam) case FD_ACCEPT: / accept返回的s1套接字s1=:accept(s,(sockaddr*)&add1,&lenth);Break;case FD_READ: :recv(s1,cs,100,0);clientip=(LPTSTR):inet_ntoa(add1.sin_addr);rec=(LPTSTR)cs;/获取服务器的时间与日期,并在控件中显示SYSTEMTIME st; CString strDate,strTime; GetLocalTime(&st);/下面就是判断在客户端输入的请求命令CString date1;date1="Date"char *qingqiu1 = (char*)(LPCTSTR)date1); / CString的比较,因为在MFC中CString不能直接进行比较,要进行转换一下if(!strcmp(rec1,qingqiu1)|!strcmp(rec1,qingqiu2)|!strcmp(rec1,qingqiu3)/在控件中的相应位置显示“日期”,代码省略,并获取服务器的日期发送给客户端SYSTEMTIME dateSystem;GetLocalTime(&dateSystem);send(s1,(char*)&dateSystem,sizeof(SYSTEMTIME),MSG_DONTROUTE); /发送当客户端发送“Time”请求时,处理的方法一样,在此就不在列举代码,同学自己完成代码。3.5实验结果与分析在完成了上述步骤,经调试后,运行程序得到的结果如下图:客户端发送请求命令,服务器做出响应,并在控件中进行显示:图3:客户端发送时间请求命令图4:客户端发送日期请求命令图5:服务器端的日志3.6实验总结 通过对C/S通信模式的编程,我们应该了解客户/服务器的工作原理、编程原理和方法。在学习本实验的基础上,请查阅其他相关的资料和文档,利用CAsyncSocket类实现一个简单的客户/服务器,同学可以在课下进行练习。

    注意事项

    本文(实验三:编写简单的客户服务器程序.doc)为本站会员(创****公)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开