(windows网络编程设计)

更新时间:2023-10-07 15:03:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Windows网络编程技术

课程设计报告

题目 模拟FTP功能

院 系: 数学与计算机学院

专业班级: 网络091 学 号: 0904681125 学生姓名: 吴 洋 指导教师: 胡 鸣

2012年 5月14日

实验目的:

为了使windows系统中的通用接口技术能够在网络环境中得

以应用,也就是使得分布在不同主机上的进程间的通信就像读写本地文件那样进行的话就需要构建新的复杂的进程间通信机制。另外,还由于进行网络操作的两个进程可能不在同一机器上,进程间进行通信首先要建立他们之间的联系;其次因为网络协议具有多样性,通信中如何建立一种通用机制支持多种协议是一种更大的挑战。关于网络间进程通信的工作就是要建立一种包含广泛网络语义的程序接口,这种接口可以为网络应用编程提供服务,作为进程通信界面成为开发网络应用软件的强有力工具。

实验要求:

理解windows环境支持的网络协议的特点; 理解套接字的基本功能的作用; 掌握基本的套接字函数编程方法;

功能简介:

此实例完成模拟的FTP功能。服务器端在端口2000处进行侦听,

并处于等待连接状态。客户端试图和服务器连接,一旦建立连接,就可以在客户端和服务器端进行文件传输(程序要求文件小于32KB)。客户端输入要传输的文件名,服务器接收到文件名后,将其写到相应

的位置。

设计思路:

客户 服务器 产生套接字 Socket() 产生套接字 Socket() 地址与套接字连接bind() 地址与套接字连接bind() 申请一个连接请求connect() 网上信息 进入监听状态 listen() 等待接受请求 accept()

网上信息

个人负责程序段:(初始化套接字和创建套接字)

DWORD StartSock() { WSADATA WSAData; //创建windows 扩展套接字 数据对象 if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0) //初始化WINSOCK2.DLL版本连接裤 { printf(\ return(-1); } ServerAddr.sin_family=AF_INET; //设置默认地址协议 ServerAddr.sin_addr.s_addr=inet_addr(\设置服务器地址

ServerAddr.sin_port=htons(RECV_PORT); //设置接收端口 return(1); }

//创建套接字

DWORD CreateSocket() { sock=socket(AF_INET,SOCK_STREAM,0); //使用套接字函数创建一个套接字并绑定协议。 if(sock==SOCKET_ERROR) { printf(\ WSACleanup(); return(-1); } return(1); }

总程序代码:

1.服务器

#include\#include\#include\

#pragma comment(lib,\

#define RECV_PORT 2000 #define SEND_PORT 3000

#define MAX_FILESIZE 32*1024

SOCKET sock,sock1; sockaddr_in ServerAddr; sockaddr_in ClientAddr;

struct Filedata { char ffname[30]; char ffdata[MAX_FILESIZE]; int len; }DataPacket;

int Addrlen;

DWORD StartSock() { WSADATA WSAData; if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0) { printf(\ return(-1); } return(1); }

DWORD CreateSocket() { sock=socket(AF_INET,SOCK_STREAM,0); if(sock==SOCKET_ERROR) { printf(\ WSACleanup(); return(-1); }

ServerAddr.sin_family=AF_INET;

ServerAddr.sin_addr.s_addr=htonl(INADDR_ANY); ServerAddr.sin_port=htons(RECV_PORT); if(bind(sock,(struct sockaddr*)&ServerAddr,sizeof(struct sockaddr_in))==SOCKET_ERROR) { printf(\ return(-1); } return(1); }

DWORD WriteFile(char* fname,char* fdata,int flen) { int i; FILE *fp; fp=fopen(fname,\ if(fp==NULL) { printf(\

本文来源:https://www.bwwdw.com/article/t43d.html

Top