linux面向连接的协议,linuxTCP协议.ppt
linuxTCP协议
课程安排 面向连接的套接字通信工作流程 绑定端口 监听与连接 数据的发送与接收 所谓socket套接字,指的是在网络通信以前建立的通信接口。进行网络连接以前,需要向系统注册申请一个新的socket。然后使用这个socket进行网络连接。 提示:套接字=传输层协议+端口号+IP地址。 在进行网络连接以前,需要用socket函数向系申请一个通信端口。这个函数的使用方法如下所示。 int socket(int domain, int type, int protocol); 面向连接的套接字通信工作流程 为了实现服务器与客户机的通信,服务器和客户机都必须建立套接字。服务器与 客户机的工作原理可以用下面的过程来描述。 (1)服务器先用socket函数来建立一个套接字,用这个套接字完成通信的监听。 (2)用bind函数来绑定一个端口号和IP地址。因为本地计算机可能有多个网卡和IP,每一 个IP有多个端口。需要指定一个IP和端口进行监听。 (3)服务器调用listen函数,使服务器的这个端口和IP处于监听状态,等待客户机的连接 (4)客户机用socket函数建立一个套接字,设定远程IP和端口。 (5)客户机调用connect函数连接远程计算机指定的端口。 (6)服务器用accept函数来接受远程计算机的连接,建立起与客户机之间的通信。 (7)建立连接以后,客户机用write函数向socket中写入数据。也可以用read函数读取服 务器发送来的数据。 (8)服务器用read函数读取客户机发送来的数据,也可以用write函数来发送数据。 (9)完成通信以后,用close函数关闭socket连接。 客户机与服务器建立面向连接的套接字进行通信,请求与响应过程可用图17-1来表示。 Socket Function 创建一个套接口,指定协议类型 ?#include //#include ?int fd= socket(int family, int type, int protocol) ?family ?AF_INET//IPv4 ?AF_INET6//IPv6 ?type ?SOCK_STREAM // TCP ?SOCK_DGRAM // UDP ?SOCK_RAW // IP ?Protocol = 0 // 一般一个套接字类型只支持一个协议 ?//返回值:出错返回-1,否则返回socket 套接字描述符 绑定端口 绑定端口指的是将套接字与指定的端口相连。用socket函数建立起一个套接字以后,需要用bind函数在这个套接字上面绑定一个端口。 提示:只有套接字建立后才能够执行端口绑定操作。 绑定端口函数bind:函数bind可以将一个端口绑定到一个已经建立的socket上,这个函数的使用方法如下所示。 int bind(int sockfd,struct sockaddr *my_addr,int addrlen); 参数列表中,sockfd是已经建立的socket编号。sockaddr是一个指向sockaddr结构体类型的指针。sockaddr的定义方法如下所示。 struct sockaddr { unsigned short int sa_family; char sa_data[14]; }; 这个结构体的成员含义如下所示。 sa_family:为调用socket()时的domain参数,即AF_xxxx值。 sa_data:最多使用14个字符长度,含有IP地址与端口的信息。 如果建立socket时使用的是AF_INET参数,则sockaddr结构体的定义方法如下所示。 01struct sockaddr_in 02{ 03 unsigned short int sin_family; 04 uint16_t sin_port;//2 05 struct in_addr sin_addr; //4 06 unsigned char sin_zero[8]; 07}; 结构体的成员addr也是一个结构体,定义方式如下所示。 struct in_addr { uint32_t s_addr; }; 在这些结构体中,成员变量的作用与含义如下所示。 sin_family:即为sa_family,为调用socket()时的domain参数。 sin_port:使用的端口号。 sin_addr.s_addr:IP 地址。 sin_zero:未使用的字段,填充为0。 参数addrlen是my_addr的长度,可以用sizeof函数来取得。函数可以把指定的IP与端口绑定到已经建立的socket上面。
linux面向连接的协议,linuxTCP协议.ppt相关推荐
- Linux下几种RTP协议实现的比较和JRTPLIB编程讲解
流媒体指的是在网络中使用流技术传输的连续时基媒体,其特点是在播放前不需要下载整个文件,而是采用边下载边播放的方式,它是视频会议. IP电话等应用场合的技术基础.RTP是进行实时流媒体传输的标准协议和关 ...
- Redhat linux AS4 环境下iSCSI协议配置
Redhat linux AS4 环境下iSCSI协议配置<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:offi ...
- linux国际象棋,国际象棋通用引擎协议
国际象棋通用引擎协议 2004年9月初稿,2006年2月修订 一.UCI协议的特点 UCI协议,全称是国际象棋通用引擎协议(Universal Chess Interface,直译作通用象棋接口).它 ...
- nvr linux 软件,Linux系统下运行RTSP协议安防视频平台EasyNVR出现安装服务错误,如何解决?...
原标题:Linux系统下运行RTSP协议安防视频平台EasyNVR出现安装服务错误,如何解决? 大家知道TSINGSEE青犀视频云-边-端全线产品都是有两个不同系统的版本,分别是windows版本和l ...
- 【Linux】特别篇--SMBus 协议
[Linux]特别篇--SMBus 协议 一.SMBus 简介 二.SMBus 与 I2C 区别 三.SMBus协议分析 3.1 符号含义 3.2 SMBus Quick Command 3.3 SM ...
- 【Linux网络编程】网络协议入门
00. 目录 文章目录 00. 目录 01. 前言 02. 概述 03. 物理层 04. 数据链路层 05. 网络层 06. 传输层 07. 应用层 08. 附录 01. 前言 我们每天使用互联网,你 ...
- 【Linux网络编程】 网络协议入门
我们每天使用互联网,每天都与网络在一起,曾是否想过网络的原理是什么?为什么能够能够实现远程通信?通过阅读本文,相信你能够揭开网络神秘的面纱. 全世界几十亿台电脑,连接在一起,相互间能够通信.北京的某一 ...
- linux 路由协议,路由协议之RIP协议
路由协议之RIP协议 RIP协议简介: RIP协议的全称是一种内部网关协议(IGP),是一种动态路由选择,用于一个自治系统(AS)内的路由信息的传递.RIP协议是基于距离矢量算法(DistanceVe ...
- Linux Web基础与HTTP协议
文章目录 Web基础 域名概念 DNS域名解析 域名注册 Web1.0 与Web2.0 HTTP协议 HTTP协议概述 HTTP1.0和HTTP1.1之间的区别 HTTP方法 HTTP 状态码 小结 ...
最新文章
- 【分析函数】Oracle分析函数之LAG和LEAD
- python输入语句-python2 和 pyhton3 输入语句写法
- 面试官:一千万数据,怎么快速查询?
- java udp 同一个端口_java – 系统中的两个不同的UDP套接字可以绑定相同的端口吗?...
- (译文)JavaScript基础——JavaScript中的深拷贝
- getParentalNodePaths、osg::NodePathList、osg::NodePath详解
- LOAM_velodyne学习(三)
- 小米登录协议分析_小米温湿度传感器协议分析
- 前端开发 get请求与post请求 0228
- 深度学习 | Why and How:神经网络中的权重初始化
- Python学习笔记之类(二)
- 在MacOS和iOS系统中使用OpenCV
- IE haslayout总结
- 摄影系列:李涛ps视频教程笔记
- 股票 - - 常用指标【下】
- 【经典产品思维】引领“用户消费”的产品怎么做?
- Kali Linux速查手记(长期更新)
- Android屏幕适配方案
- 厚物科技《什么是PXI》
- 深入浅出FE(十四)深入浅出websocket
热门文章
- gmr 通信 matlab,matlab使用TCP/IP Server Sockets
- Travis CI mysql_DevOps工具介绍连载(34)——Travis CI
- Python基础教程:内置类型之数值
- python实现验证码与进度条
- python与rpc服务
- python 查询文本文件的层次
- 计算机基础中怎么评价,浅谈职校计算机基础教学中的教学评价
- Linux是否兼容windows跨区卷,简单卷与跨区卷的区别介绍
- java逻辑可以判断文本么_Shell逻辑判断符号_Shell中的_与_或_非_Shell_-a_-e_!作用
- 为什么要把CV_8UC3(Vec3b)无符号整型转换成CV_32F(Vec3F)32位浮点数据类型?(在高精度下处理)