资源预览内容
第1页 / 共28页
第2页 / 共28页
第3页 / 共28页
第4页 / 共28页
第5页 / 共28页
第6页 / 共28页
第7页 / 共28页
第8页 / 共28页
第9页 / 共28页
第10页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1.1 Linux平台简单套接字编程实验类型:设计性 一、实验环境操作系统:Linux编程工具及集成开发环境:gcc, vi或anjuta二、实验目的和要求实验目的:掌握Linux平台上简单的客户机端和服务器端的套接字编程。实验要求:(1)在Linux上,编写、编译1个客户机端程序和1个服务器端程序。要求客户机端程序能发送请求给服务器端程序,服务器端程序收到后能发送本机时间给客户机端程序。选择TCP或UDP方式之一。(2)在相同或不同机子上,先运行服务器端程序可执行文件,后运行客户机端程序可执行文件。附加内容:编写聊天程序,即客户机端程序和服务器端程序之间都能够多次发送消息给对方,也能够多次接收对方发送的消息。三、实验提示1可以从http:/netcom.zjgsu.edu.cn/dlg/HomeTeaching_files/download/source_code/socket/v3.linux.dist.tar.Z下载可供参考的程序。解压采用“zcat v3.linux.dist.tar.Z | tar xvf ”。编译下列文件产生TCPdaytime、UDPtime、TCPdaytimed、UDPtimed四个可执行文件。gcc connectsock.c connectTCP.c errexit.c TCPdaytime.c o TCPdaytimegcc connectsock.c connectUDP.c errexit.c UDPtime.c o UDPtimegcc passivesock.c passiveTCP.c errexit.c TCPdaytimed.c o TCPdaytimedgcc passivesock.c passiveUDP.c errexit.c UDPtimed.c o UDPtimedTCPdaytime和TCPdaytimed分别是TCP版本的时间查询客户端和服务器端程序。UDPtime和UDPtimed分别是UDP版本的时间查询客户端和服务器端程序。此外,TCPecho.c, UDPecho.c分别是TCP和UDP版本的,实现echo服务的客户端程序,需要用户自己写服务器端程序。2先找到包含主函数main()的文件进行编译和连接,如果发现某些被调用函数没有找到,再把包含这些被调用函数的文件一起编译。多个文件一起编译的办法有三个:一是gcc file1.c file2.c , 二是把包含被调用函数的文件用#include “file1.c”的方式包含在主函数文件中,三是使用anjuta建立一个工程,和VC+很类似。3首先,通过阅读、编译、连接和运行别人的程序来学习编程;其次,尝试局部修改别人的程序来理解程序中每一个细节的含义;最后,编写自己的程序,其中可以使用别人的程序(段)。4如果编译时提示errno没有定义,则加上#include1.2 Windows平台简单套接字编程实验类型:设计性 一、实验环境操作系统:Windows编程工具及集成开发环境:VC+二、实验目的和要求实验目的:掌握Windows平台上简单的客户机端和服务器端的套接字编程。实验要求:(1)在Windows上,编写、编译1个客户机端程序和1个服务器端程序。要求客户机端程序能发送请求给服务器端程序,服务器端程序收到后能发送本机时间给客户机端程序。(2)在相同或不同机子上,先运行服务器端程序可执行文件,后运行客户机端程序可执行文件。附加内容:编写聊天程序,即客户机端程序和服务器端程序之间都能够多次发送消息给对方,也能够多次接收对方发送的消息。三、实验提示可以在http:/netcom.zjgsu.edu.cn/dlg/HomeTeaching_files/download/source_code/socket/basic_socket/daytime_tcp_server_client/ 和http:/netcom.zjgsu.edu.cn/dlg/HomeTeaching_files/download/source_code/socket/basic_socket/time_udp_server_client/分别提供的TCP和UDP程序的基础上改写。1.3 并发套接字编程实验类型:设计性 一、实验环境操作系统:Windows或Linux编程工具及集成开发环境:VC+或anjuta二、实验目的和要求实验目的:掌握Linux或Windows平台上多线程、多进程或异步I/O的套接字编程。实验要求:完成下列任务之一(1)按照“7.4 多线程网络编程的例子”(叶树华,高志红.网络编程实用教程.北京:人民邮电出版社,2006)的叙述,在Windows上改写ftp客户端程序,使之支持多线程。(2)完成select或WSAEventSelect的一个程序,要求用多个客户端进行测试。附加内容:(1)分别在Linux和Windows平台上尝试各种并发套接字编程。(2)测试对于一个并发服务器,最多有几个客户机可以与之相连。三、实验提示(1)参考http:/netcom.zjgsu.edu.cn/dlg/HomeTeaching_files/download/source_code/socket/mfc/WinInet/mtFtp.rar中是把upload功能改成多线程的例子,通过Windiff(Microsoft Visual Studio 6.0- Microsoft Visual Studio 6.0 Tools-Windiff)了解多线程的编程语句。(2)对于select的例子,服务器程序可以参考http:/netcom.zjgsu.edu.cn/dlg/HomeTeaching_files/download/source_code/socket/basic_socket/echo_udp_tcp/tcp_synchronous_io_server/客户机程序可以参考http:/netcom.zjgsu.edu.cn/dlg/HomeTeaching_files/download/source_code/socket/basic_socket/echo_udp_tcp/tcp_client(3)对于WSAEventSelect的例子,服务器程序可以参考http:/netcom.zjgsu.edu.cn/dlg/HomeTeaching_files/download/source_code/socket/select客户机程序可以参考http:/netcom.zjgsu.edu.cn/dlg/HomeTeaching_files/download/source_code/socket/basic_socket/echo_udp_tcp/tcp_client(4)在http:/netcom.zjgsu.edu.cn/dlg/HomeTeaching_files/download/source_code/socket/basic_socket/echo_udp_tcp/ tcp_multiple_process_server上有多进程的例子。(5)多线程程序编译时,在Linux上要用-pthread选项;在Windows上需要更改设置: Project - Settings - 选择C/C+属性页, 在Category中选择Code Generation, 再在Use run-time library中选择Debug Multithreaded或者multithreaded。四、思考题1与传统串行程序设计方法相比,简要说明并发程序设计方法的优点。2比较多线程、多进程和异步I/O这三种并发套接字编程方法的优缺点。3在多线程套接字编程中应注意哪些问题?1.4 MFC编程实验类型:设计性 一、实验环境操作系统:Windows编程工具及集成开发环境:VC+二、实验目的和要求实验目的:掌握Windows平台上简单MFC编程。实验要求:在Windows上,编写、编译1个包含文本显示框和对话框的程序。1.5 CSocket编程实验类型:设计性 一、实验环境:操作系统:Windows编程工具及集成开发环境:VC+二、实验目的和要求实验目的:掌握CAsyncSocket和CSocket的套接字编程。实验要求:完成对下面程序的简单修改(比如登录、统计)。(1)教材上的点对点通信程序(参见“5.4 CAsyncSocket类的应用实例”)。(2)教材上的多点聊天程序。三、实验提示示例:在界面上添加一个“关闭”按钮。第一步,修改控件的属性。在弹出的对话框中修改与该控件功能相对应的成员函数的名字。按“OK”键后,出现该成员函数的定义,便可在其中添加相应的代码进行功能的控制。例如,我们这里希望该控件实现的是关闭整个对话框的功能,所以在成员函数体内添加如下的定义:CDialog:OnCancel();由此便可简单实现关闭按钮的功能。请参照上例,对原程序作些简单功能的修改。1.6 WinInet编程实验类型:设计性 一、实验环境:操作系统:Windows编程工具及集成开发环境:VC+二、实验目的和要求实验目的:掌握WinInet的套接字编程。实验要求:读懂并修改 “6.4 MFC WinInet类应用程序编程实例” 中ftp客户端程序。附加内容:读懂教师提供的http客户端程序,并加以修改,使之能下载文件及目录。三、实验提示1从http:/netcom.zjgsu.edu.cn/dlg/HomeTeaching_files/download/source_code/socket/WinInet/下载babyftp.zip和WinInet.rar。前者解压后是一个无需安装的ftp服务器,后者是提供的ftp和http客户端程序。2读懂ftp程序,然后修改。比如,增加查询到文件的计数(1)修改资源,增加一个编辑框(图1)图1 图2(2)通过类向导,为编辑框增加变量(图2)(3)在void CFtpDlg:OnQuery()中插入代码(加粗部分)m_fileNum =0;UpdateData(FALSE);bContinue=pFileFind-FindNextFile(); / 查找下一个文件while (bContinue) / 找到了第一个文件,继续找其它的文件m_listFile.AddString(strFileName);m_fileNum+;UpdateData(FALSE);bContinue=pFileFind-FindNextFile(); / 查找下一个文件1.7 MFC WinSock类
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号