版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 华南师范大学本科学生实验报告 实验课程:互联网原理与应用 实验名称:SOCKET网络程序设计一、实验目标:a、进一步掌握UDP及TCP协议的工作原理b、掌握SOCKET编程的基本方法c、学习应用C语言与WinSock2进行简单的无连接的网络程序设计,实现网络数二、实验原理:1、关于使用套接字编程的一些基本概念(a) 半相关与全相关(b) TCP/IP协议的地址结构struct sockaddr_inshort sin_family; /*AF_INET*/u_short sin_port; /*16位端口号,网络字节顺序*/struct in_addr sin_addr; /*32位IP地址
2、,网络字节顺序*/char sin_zero8; /*保留*/(c) 套接字类型TCP/IP的socket提供下列三种类型套接字。流式套接字(SOCK_STREAM)、数据报式套接字(SOCK_DGRAM)原始式套接字(SOCK_RAW)(d) 基本套接字系统调用 (1) 创建套接字socket() (2) 指定本地地址bind() (3) 建立套接字连接connect()与accept() (4) 监听连接listen() (5) 数据传输send()与recv() (6) 输入/输出多路复用select() (7) 关闭套接字closesocket()2、用于无连接协议(如UDP)的SOC
3、KET系统调用流程框图3、面向连接协议(如TCP)的SOCKET系统调用流程框图三、实验设备及材料:计算机、路由器实验流程或装置示意图a、用于无连接协议(如UDP)的SOCKET系统调用流程框图:Socket()Bind()等待来自客户的数据recvfrom()sendto()数据处理服务员数据(请求)数据(回答)Socket()sendto()recvfrom()客户bind()b、面向连接协议(如TCP)的SOCKET系统调用流程框图Listen()Socket()Bind()等待来自客户的连接请求accept()send()recv()数据处理服务员建立连接数据(请求)数据(回答)sen
4、d()Socket()connect()recv()客户实验步骤:使用UDP协议的无连接客户-服务员程序设计。根据实验原理中介绍的内容,设计一个无连接的客户-服务员系统,实现二者之间的数据传递。实验程序:客户端程序:#include #include #define SERV_UDP_PORT 8888 /*服务员进程端口号,视具体情况而定*/#define CLIENT_UDP_PORT 8080#define SERV_HOST_ADDR 193.169.1.41 /*服务员地址,视具体情况而定*/#define CLIENT_HOST_ADDR 193.169.1.42#define S
5、ERVER_ADD 0 xc1a90134#define CLIENT_ADD 0 xc1a90133#pragma comment(lib,ws2_32.lib)/* 宏定义用来打印错误消息*/#define PRINTERROR(s)fprintf(stderr,n%: %dn, s, WSAGetLastError()/数据报通信的客户端子程序 /void DatagramClient(short nPort)SOCKET theSocket;/*创建一个数据报类型的socket*/theSocket = socket(AF_INET,/ 地址族SOCK_DGRAM, / socket类
6、型IPPROTO_UDP);/ 协议类型:UDP/*错误处理*/if (theSocket = INVALID_SOCKET)PRINTERROR(socket();return;/*填写客户端地址结构*/SOCKADDR_IN saClient;saClient.sin_family = AF_INET;saClient.sin_addr.s_addr = inet_addr(CLIENT_HOST_ADDR); / 由WinSock指定地址saClient.sin_port = htons(nPort); / 客户端进程端口号/* 将客户端地址与已创建的socket绑定*/int nRet
7、;nRet = bind(theSocket,/ Socket 描述符(LPSOCKADDR)&saClient, / 客户端地址sizeof(struct sockaddr)/地址长度);/*错误处理*/if (nRet = SOCKET_ERROR)PRINTERROR(bind();closesocket(theSocket);return;SOCKADDR_IN saServer; char szBuf1024;int nLen;saServer.sin_family = AF_INET;saServer.sin_addr.s_addr = inet_addr(SERV_HOST_AD
8、DR);saServer.sin_port = htons(SERV_UDP_PORT);nLen = sizeof(saServer);while(1)/* 发送数据给服务器 */strcpy(szBuf,From the client);scanf(%s,&szBuf);sendto(theSocket,szBuf,strlen(szBuf),0,(LPSOCKADDR)&saServer,nLen);/system(pause);/* 接收来自服务器端的数据*/memset(szBuf,0,sizeof(szBuf);nRet = recvfrom(theSocket,szBuf,siz
9、eof(szBuf),0,(LPSOCKADDR)&saServer,&nLen);if(szBuf0!=0)printf(nData received: %sn,szBuf);/while(1)/ /*准备接收数据*/memset(szBuf, 0, sizeof(szBuf);/nRet = recvfrom(theSocket,/ 已绑定的socket/szBuf,/ 接收缓冲区/sizeof(szBuf),/ 缓冲区大小/0,/ Flags/(LPSOCKADDR)&saClient,/ 接收客户端地址的缓冲区/&nLen);/ 地址缓冲区的长度/*打印接收到的信息*/printf(n
10、Data received: %s, szBuf);/* 发送数据给客户端*/ strcpy(szBuf, From the Server);/sendto(theSocket,/ 已绑定的socket/szBuf,/ 发送缓冲区/strlen(szBuf),/ 发送数据的长度/0,/ Flags/(LPSOCKADDR)&saClient,/ 目的地址/nLen);/ 地址长度/ closesocket(theSocket);return;/数据报客户端主程序 /void main()WORD wVersionRequested = MAKEWORD(1,1);WSADATA wsaData;int nRet;short nPort;nPort = CLIENT_UDP_PORT;/* 初始化Winsock*/nRet = WSAStartup(wVersionRequested, &wsaData);if (wsaData.wVersion != wVersionRequested)fprintf(stderr,n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度建筑施工期间质量检测合同3篇
- 2024绿化工程合同范本
- 2024装饰工程转让合同范本
- 2024年教育机构与学校合作课程开发及培训服务合同3篇
- 2024年建筑材料供应合同范本框架协议
- 2024年度房产抵押贷款担保合同9篇
- 2024年度健身会员卡服务协议版B版
- 中国计量大学《基础写作》2021-2022学年第一学期期末试卷
- 2024年度个体餐饮承包合同市场营销策略2篇
- 中国地质大学(武汉)《首饰展示设计》2023-2024学年第一学期期末试卷
- 教学反思简短【15篇】
- 2024年资格考试-WSET二级认证考试近5年真题附答案
- 12J201平屋面建筑构造图集(完整版)
- 22-深化设计方案
- 苏教版数学小学四年级上学期试卷与参考答案(2024-2025学年)
- 循证护理学(理论部分)智慧树知到答案2024年复旦大学
- 20以内的加法口算练习题4000题 284
- 高中历史选择性必修2知识点总结归纳
- 一例急性阑尾炎伴局限性腹膜炎患儿的护理查房
- 湖南省2024年对口升学考试计算机应用类试题(含参考答案)
- 城管责令停工通知书
评论
0/150
提交评论