版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、网络协议栈3 - TCP/IP协议编程,邹昕光 哈尔滨工业大学自动化测控所 联系电话:86413532 - 516,Agenda,Socket编程介绍 Socket函数 TCP Socket编程案例 UDP Socket编程案例,套接口介绍,套接口介绍,套接口介绍,TCP - 面向连接的协议,保证数据传输的正确性,TCP协议发送数据包时,要求对方返回确认数据包,如果没有收到,TCP重新传输数据。 - 失败数次后,TCP才放弃。 - 提供流量控制,告诉对方能够接收多少字节数据。 - 保证数据接收的顺序和发送的顺序一致。 UDP - 无连接协议,不保证数据是否能够到达目的地。 - 没有流量控制。
2、- 不保证数据接收顺序和发送的顺序一致。,套接口介绍,一个简单服务器的套接口编程步骤 - 建立套接口 - 绑定地址和端口 - 建立套接口队列 - 接收连接 - 处理连接 - 关闭套接口,套接口介绍,客户程序套接口编程的步骤 - 建立套接口 - 连接服务器 - 处理连接 - 关闭套接口,socket,套接口的建立 int socket (int domain, int type, int protocol); 参数说明 - domain:协议族,可以是下列类型之一 AF_INET AF_UNIX AF_LOCAL,socket,参数说明 - type:套接口的类型 SOCKET_STREAM 提
3、供TCP套接字 SOCKET_DAGRAM 提供UDP套接字 SOCKET_RAW 提供原始套接字,允许访问IP层 数据包 - protocol:指示对套接字应使用哪个协议。除了使用原始套接口外,protocol通常设置为0 - 返回值:如果调用成功,返回套接字句柄,bind,bind 为了使其他的进程能够使用套接口,必须与一个端口联系起来。 int bind (int socket, const struct sockaddr * address, socklen_t address_len); 参数说明 - socket:调用函数socket()的返回值。 - address:存储IP地址
4、和端口号的数据结构。 - address_len:第二个结构参数的长度。 - 返回值:正确调用返回0,否则返回-1。,listen,建立套接口队列 int listen (int socket, int backlog); 参数说明 - socket:调用socket()函数的返回值。 - backlog:指定socket队列的最大连接数,当队列中待处理的连接数超过该值,则拒绝连接。对于一个比较繁忙的网络服务,需要指定较大的backlog值。 - 返回值:正确调用返回0,否则返回-1。,accept,等待连接 int accept (int socket, struct sockaddr *a
5、ddress, socklen_t *address_len); 参数说明 - socket:调用socket()函数的返回值。 - address:存放客户程序IP地址和端口号的结构, 如果对其不感兴趣,可以设为NULL。 - address_len:第二个结构参数的长度。 - 返回值:返回一个新连接的套接口描述句柄。,connect,连接服务器 int connect (int socket, const struct *address, socklen_t address_len); 参数说明 - socket:调用socket()函数的返回值。 - address:存储服务器IP地址和
6、端口的结构。 - address_len:第二个结构参数的长度。 - 返回值:成功调用返回0,否则返回-1。,recv/send,TCP接收/发送函数 int recv (int socket, void *buf, size_t len, int flag); int send (int socket, const void *buf, size_t len, int flags) 参数说明 - socket:调用socket()函数的返回值。 - buf:缓存区首地址。 - len:期望接收/发送的字节数。 - 返回值:成功调用返回实际接收/发送字节数,否则返回-1。,recv/send,
7、参数说明 - flags:通信参数。 MSG_OOB:指示发送/接收的数据为紧急 数据 MSG_PEEK:接收数据,但不把数据从接 收缓冲区中删除,调用该函 数后,数据仍然可以被以后 的读操作获得。,recvfrom/sendto,UDP接收/发送函数 int recvfrom(int socket, void *buf, size_t len, int flag, struct sockaddr *from, int *fromlen); int sendto(int socket, const void *buf, size_t len, int flags, const struct s
8、ockaddr *to, int tolen) 参数说明 - from/to 指向一个套接字地址,即通信对端地址 - fromlen/tolen 上面地址参数的长度 - 返回值:成功调用返回实际接收/发送字节数, 否则返回-1。,套接口函数read/write/close,read/write:数据通信 read:从套接口中读取数据。 write:从套接口中写入数据。 close:关闭套接口。,TCP/IP套接字编程示例,TCP 编程,SocketHeader.h,TCPServer.c,TCPServer.c,TCPServer.c,TCPClient.c,TCPClient.c,编译运行,gcc -o TCPServer TCPServer.c gcc -o TCPClient TCPClient.c ./TCPServer.exe ./TCPClient.exe,UDP编程,UDPServer.c,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 市政工程钢筋混凝土施工方案范例
- 学困生阅读障碍原因分析及辅导方案
- 2025-2030照明电器行业市场需求及供应状况及未来投资发展分析文件
- 2025-2030湘鄂赣辣椒产业集群发展现状与价值链提升研究
- 2025-2030湘菜冷链物流体系优化方案研究
- 2025-2030消费级无人机适航认证体系完善对市场准入门槛的影响
- 2025-2030消费级AR眼镜人机交互创新与内容开发者生态培育报告
- 2025-2030消费品制造业供应链优化与市场竞争力提升规划分析报告
- 2025-2030浅谈钢铁制造行业发展前景与市场定位分析预测报告
- 2025-2030洗涤用品细分市场消费者行为数据挖掘购买留存机制报告
- 中秋福利采购项目方案投标文件(技术方案)
- 固态电池技术在新能源汽车领域的产业化挑战与对策研究
- 手术部(室)医院感染控制标准WST855-2025解读课件
- 二氧化硅气凝胶的制备技术
- 湖南省岳阳市平江县2024-2025学年高二上学期期末考试语文试题(解析版)
- 2024-2025学年湖北省武汉市江汉区七年级(下)期末数学试卷
- 常规体检指标讲解
- 建筑工程生产管理培训
- 新人教版高中数学必修第二册-第八章 立体几何初步 章末复习【课件】
- 仓库物料效期管理制度
- GB/T 157-2025产品几何技术规范(GPS)圆锥的锥度与锥角系列
评论
0/150
提交评论