预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Windows网络编程技术 课程设计报告 题目模拟FTP功能 院系:数学与计算机学院 专业班级:网络091 学号:0904681125 学生姓名:吴洋 指导教师:胡鸣 2012年5月14日 实验目的: 为了使windows系统中的通用接口技术能够在网络环境中得以应用,也就是使得分布在不同主机上的进程间的通信就像读写本地文件那样进行的话就需要构建新的复杂的进程间通信机制。另外,还由于进行网络操作的两个进程可能不在同一机器上,进程间进行通信首先要建立他们之间的联系;其次因为网络协议具有多样性,通信中如何建立一种通用机制支持多种协议是一种更大的挑战。关于网络间进程通信的工作就是要建立一种包含广泛网络语义的程序接口,这种接口可以为网络应用编程提供服务,作为进程通信界面成为开发网络应用软件的强有力工具。 实验要求: 理解windows环境支持的网络协议的特点; 理解套接字的基本功能的作用; 掌握基本的套接字函数编程方法; 功能简介: 此实例完成模拟的FTP功能。服务器端在端口2000处进行侦听,并处于等待连接状态。客户端试图和服务器连接,一旦建立连接,就可以在客户端和服务器端进行文件传输(程序要求文件小于32KB)。客户端输入要传输的文件名,服务器接收到文件名后,将其写到相应的位置。 设计思路: 客户 服务器 产生套接字 Socket() 地址与套接字连接bind() 申请一个连接请求connect() 产生套接字 Socket() 地址与套接字连接bind() 进入监听状态 listen() 等待接受请求 accept() 网上信息 网上信息 个人负责程序段:(初始化套接字和创建套接字) DWORDStartSock() { WSADATAWSAData;//创建windows扩展套接字数据对象 if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0)//初始化WINSOCK2.DLL版本连接裤 { printf("sockinitfail!\n"); return(-1); } ServerAddr.sin_family=AF_INET;//设置默认地址协议 ServerAddr.sin_addr.s_addr=inet_addr("127.0.0.1");//设置服务器地址 ServerAddr.sin_port=htons(RECV_PORT);//设置接收端口 return(1); } //创建套接字 DWORDCreateSocket() { sock=socket(AF_INET,SOCK_STREAM,0);//使用套接字函数创建一个套接字并绑定协议。 if(sock==SOCKET_ERROR) { printf("sockcreatefail!"); WSACleanup(); return(-1); } return(1); } 总程序代码: 1.服务器 #include"WinSock.h" #include"windows.h" #include"stdio.h" #pragmacomment(lib,"wsock32.lib") #defineRECV_PORT2000 #defineSEND_PORT3000 #defineMAX_FILESIZE32*1024 SOCKETsock,sock1; sockaddr_inServerAddr; sockaddr_inClientAddr; structFiledata { charffname[30]; charffdata[MAX_FILESIZE]; intlen; }DataPacket; intAddrlen; DWORDStartSock() { WSADATAWSAData; if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0) { printf("sockinitfail!\n"); return(-1); } return(1); } DWORDCreateSocket() { sock=socket(AF_INET,SOCK_STREAM,0); if(sock==SOCKET_ERROR) { printf("sockcreatefail!"); WSACleanup(); return(-1); } ServerAddr.sin_family=AF_INET; ServerAddr.sin_addr.s_addr=htonl(INADDR_ANY);