




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验实验3 4 UDP服务器编程服务器编程 实验日期 实验日期 一 实验目的一 实验目的 1 熟悉socket函数 2 了解udp服务器编程的基本框架 3 使用socket函数实现简单的udp服务端和客户端程序及他们之间的通信 二 实验环境二 实验环境 1 带网络连接的Linux系统 实验室的环境为Ubuntu 三 实验原理三 实验原理 1 迭代服务器框架 s so oc ck ke et t s so oc ck ke et t w wr ri it te e c cl lo os se e r re ea ad d b bi in nd d c cl lo os se e w wr ri it te e r re ea ad d 数据请求 数据响应 关闭连接 UDP服务器 客户端 2 涉及的头文件 include include include include include include include include 3 涉及的系统函数 accept 确认外来连接 并将它与一个立即建立的数据套接字联系起来 原始 套接字返回到监听状态 bind 给未命名套接字赋一个本地名 closesocket 从进程对象参考表中删去一个套接字 只有当SO LINGER设置时才 阻塞 connect 在指定套接字上初始化连接 getsockname 获取指定套接字的当前名字 getsockopt 获取与指定套接字相关的选项 htonl 将一个32位数从主机字节顺序转换为网络字节顺序 htons 将一个16位数从主机字节顺序转换为网络字节顺序 inet addr 将一个用网际标准点分表示法表示的字符串地址转换成网际地址值 inet ntoa 将一个网际地址值转换成一个用点分十进制表示法表示的字符串地址 ioctlsocket 为套接字提供控制 listen 在指定套接字上监听外来连接 ntohl 将一个32位数从网络字节顺序转换为主机字节顺序 ntohs 将一个16位数从网络字节顺序转换为主机字节顺序 recv 从一个连接的套接字上接收数据 recvfrom 从一个连接或未连接的套接字上接收数据 select 执行多路同步I O send 给一个连接套接字发送数据 sendto 给一个连接或未连接套接字发送数据 setsockopt 设置与指定套接字相关的选项 shutdown 关闭全双工连接的一部分 socket 建立一个通讯用的末端点 返回一个套接字 三 实验步骤三 实验步骤 1 实现UDP服务器的服务端和客户端程序 服务器接收客户端发送的字符串信 息并显示 同时显示客户端的IP地址 端口号 并向客户端发送信息 如果服 务器接收的客户信息为 BYE 则退出循环 并关闭套接字 例如例如 服务器端的IP为113 42 67 90 端口为20000 客户端的IP为113 42 67 91 客户端向服务器发送字符串 hello root machine client 113 42 67 90 hello 服务器端打印出客户端发送过来的字符串 hello 并显示出客户端的ip地址和 端口号 root machine listening from the client receive message from the client ip 113 42 67 91 port message hello 服务端参考代码服务端参考代码 include include include include include include include include define PORT 20000 define BUFFERSIZE 100 int main int argc char argv int sockfd struct sockaddr in server struct sockaddr in client socklen t addrlen char buf BUFFERSIZE 创建udp的socket if sockfd socket AF INET SOCK DGRAM 0 1 printf create socket error n return 1 memset server sin family AF INET server sin port htons PORT server sin addr s addr htonl INADDR ANY 绑定服务器的socket到本地的一个端口 if bind sockfd struct sockaddr return 1 addrlen sizeof client int num 0 while 1 从客户端接收消息 num recvfrom sockfd buf sizeof buf 0 struct sockaddr if num 0 printf recvfrom error n exit 1 打印客户端的ip地址 端口和发送的消息 printf Clent s IP s n inet ntoa client sin addr printf Clent s port d n ntohs client sin port printf Clent s message s n buf 向客户端发送一条消息 表示消息已经成功收到 sendto sockfd message received welcome n 9 0 struct sockaddr if strcmp buf BYE break close sockfd return 0 保存为 udp server cpp 编译 g udp server cpp o server 运行 server 客户端参考代码 客户端参考代码 include include include include include include include include include define PORT 20000 define BUFFERSIZE 100 int main int argc char argv int sockfd num char buf BUFFERSIZE struct hostent he struct sockaddr in server peer if argc 3 printf Usage s n argv 0 return 1 if he gethostbyname argv 1 NULL printf gethostbyname error n return 1 创建udp的socket if sockfd socket AF INET SOCK DGRAM 0 1 printf socket error n return 1 bzero server sin family AF INET server sin port htons PORT server sin addr struct in addr he h addr 向服务器发送从环境变量中获取的消息 sendto sockfd argv 2 strlen argv 2 0 struct sockaddr addrlen sizeof server while 1 从服务器端接收消息 存到buf中 if num recvfrom sockfd buf sizeof buf 0 struct sockaddr exit 1 if addrlen sizeof server memcmp const void continue buf num 0 printf Server Message s n buf break close sockfd 保存为 udp client cpp 编译 g udp client cpp o client 运行 client 113 2 修改你的代码 使服务端能够接收客户端发送的整形数据 并在服务器端打 印出来 注意字节序的转换问题 如果客户端没有转换整数的字节序就发送给 服务器端 服务器能否正常处理 我修改了部分代码 定义了一个一维数组number 里面包含了两个元素 1 2 在客户端里我直接发送给服务器端 sendto sockfd number sizeof number 0 struct sockaddr 服务器对于BUF的定义也进行了相应的修改 并且使用下面方法
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025昆明市盘龙区汇承中学招聘教师(12人)考前自测高频考点模拟试题及答案详解(网校专用)
- 2025德曼节能科技(山东)有限公司招聘10人考前自测高频考点模拟试题附答案详解(考试直接用)
- 2025湖南师范大学科创港校区规划建设指挥部劳务派遣人员招聘5人考前自测高频考点模拟试题附答案详解(考试直接用)
- 2025广西河池市巴马瑶族自治县消防救援大队招录3人模拟试卷有答案详解
- 2025合肥市口腔医院招聘工作人员81人考前自测高频考点模拟试题附答案详解
- 2025年西北(西安)电能成套设备有限公司招聘(4人)模拟试卷及参考答案详解
- 2025贵州民族大学参加第十三届贵州人才博览会引才60人考前自测高频考点模拟试题(含答案详解)
- 2025河南郑州高新区双桥社区卫生服务中心招聘3人模拟试卷及答案详解一套
- 河北省【中职专业高考】2025年中职高考对口升学(理论考试)真题卷【轻工纺织大类】模拟练习
- 食品加工生产合同书5篇
- DB11T 2440-2025 学校食堂病媒生物防制规范
- 高压氧的健康宣教
- 2025至2030中国硅单晶生长炉行业项目调研及市场前景预测评估报告
- 子宫肌瘤麻醉管理
- 成人床旁心电监护护理规程
- 食用菌种植项目可行性研究报告立项申请报告范文
- 2025版技术服务合同协议
- 焦炉机械伤害事故及其预防
- GB 5768.1-2025道路交通标志和标线第1部分:总则
- 江西红色文化考试试题及答案
- 苏州市施工图无障碍设计专篇参考样式(试行)2025
评论
0/150
提交评论