预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

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

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

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

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

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

天津理工大学实验报告 学院(系)名称:计算机与通信工程学院 姓名刘琪琪学号20125871专业网络工程班级1班实验题目HTTP网络编程通信课程名称网络编程课程代码实验时间2015实验地点7-219批改意见成绩教师签字:实验HTTP网络编程通信 一实验目的 利用windowssocket编写B/S架构基于http的程序 二实验环境 搭载Windows7操作系统的PC机 VC6.0编译器 三实验内容 1,客户端是浏览器无需编写 2,客户端发送连接请求 3,服务器收到请求后返回消息表示连接成功 四实验报告要求 1,服务器的完整代码 2,实验结果截图 3,Socket通信过程流程图 五部分源代码及主要Socket函数参考 1,注册套接字函数socket(intaf,inttype,intprotocol) 参数解释: af:一个地址描述,目前只支持AF_INET格式,也就是说在本次实验中此参数直接写 为AF_INET即可。 type:指定socket类型,例如TCP类型(SOCK_STREAM)UDP类型(SOCK_DGRAM) protocol:套接口制订协议类型可以为0,。常用类型有IPPROTO_TCP、IPPROTO_UDP等 2,绑定套接字函数bind(SOCKETs,conststructsockaddrFAR*addr,intnamelen);参数解释:s:socket()函数返回的套接口描述字addr:指向Socket地址的指针namelen:该地址的长度 3,监听函数listen(SOCKETs,intbacklog) 参数解释: s:socket()函数返回的套接口描述字 backlog:等待连接队列的最大长度 4,接收连接函数accept(SOCKETs,structsockaddrFAR*addr,intFAR*addrlen) 参数解释: s:socket()函数返回的套接口描述字 addr:(可选)指针,指向一缓冲区,其中接收为通讯层所知的连接实体的地址。addr参数的实际格式由套接口创建时所产生的地址族确定 addrlen:(可选)指针,输入参数,配合addr一起使用,指向存有addr地址长度的整型数 5,发送连接请求函数connect(SOCKETs,conststructcoskaddrFAR*name,intnamelen) s:socket()函数返回的套接口描述字 name:想要进行连接的端口名 namelen:名字长度 服务器代码: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h> #include<WinSock2.h> #pragmacomment(lib,"ws2_32.lib") #definePORTNUMBER8888 intmain(intargc,char*argv[]) { char*respone="HTTP/1.1200OK\r\nContent-Type:text/plain\r\nContent-Length:13\r\n\r\n20115629"; WORDversion; version=MAKEWORD(1,1);//********单工传输 WSADATAwsa; if(0!=WSAStartup(version,&wsa)){//初始化socket() printf("WSAStartuperror!\n"); exit(0); } structsockaddr_inservaddr; structsockaddr_inclientaddr; intlistenfd; intclientfd; intport; intalen; charbuf[1000]; memset(&servaddr,0,sizeof(servaddr));//初始化servaddr为0 servaddr.sin_family=AF_INET;//*****初始化地址簇 servaddr.sin_addr.s_addr=INADDR_ANY; if(argc>1){//***同样是判断传入main()函数的参数, port=atoi(argv[1]);//***默认无参数下直接初始化端口号和服务器网络序列 }else{ port=PORTNUMBER; } if(port>0){ servaddr.sin_port=htons((unsignedshort)port);//****把端口转换成网络序列 }else{ fprintf(stderr,"badportnumber%d\n",argv[1]); exit(0)