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相关推荐

  1. Linux下几种RTP协议实现的比较和JRTPLIB编程讲解

    流媒体指的是在网络中使用流技术传输的连续时基媒体,其特点是在播放前不需要下载整个文件,而是采用边下载边播放的方式,它是视频会议. IP电话等应用场合的技术基础.RTP是进行实时流媒体传输的标准协议和关 ...

  2. Redhat linux AS4 环境下iSCSI协议配置

    Redhat linux AS4 环境下iSCSI协议配置<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:offi ...

  3. linux国际象棋,国际象棋通用引擎协议

    国际象棋通用引擎协议 2004年9月初稿,2006年2月修订 一.UCI协议的特点 UCI协议,全称是国际象棋通用引擎协议(Universal Chess Interface,直译作通用象棋接口).它 ...

  4. nvr linux 软件,Linux系统下运行RTSP协议安防视频平台EasyNVR出现安装服务错误,如何解决?...

    原标题:Linux系统下运行RTSP协议安防视频平台EasyNVR出现安装服务错误,如何解决? 大家知道TSINGSEE青犀视频云-边-端全线产品都是有两个不同系统的版本,分别是windows版本和l ...

  5. 【Linux】特别篇--SMBus 协议

    [Linux]特别篇--SMBus 协议 一.SMBus 简介 二.SMBus 与 I2C 区别 三.SMBus协议分析 3.1 符号含义 3.2 SMBus Quick Command 3.3 SM ...

  6. 【Linux网络编程】网络协议入门

    00. 目录 文章目录 00. 目录 01. 前言 02. 概述 03. 物理层 04. 数据链路层 05. 网络层 06. 传输层 07. 应用层 08. 附录 01. 前言 我们每天使用互联网,你 ...

  7. 【Linux网络编程】 网络协议入门

    我们每天使用互联网,每天都与网络在一起,曾是否想过网络的原理是什么?为什么能够能够实现远程通信?通过阅读本文,相信你能够揭开网络神秘的面纱. 全世界几十亿台电脑,连接在一起,相互间能够通信.北京的某一 ...

  8. linux 路由协议,路由协议之RIP协议

    路由协议之RIP协议 RIP协议简介: RIP协议的全称是一种内部网关协议(IGP),是一种动态路由选择,用于一个自治系统(AS)内的路由信息的传递.RIP协议是基于距离矢量算法(DistanceVe ...

  9. Linux Web基础与HTTP协议

    文章目录 Web基础 域名概念 DNS域名解析 域名注册 Web1.0 与Web2.0 HTTP协议 HTTP协议概述 HTTP1.0和HTTP1.1之间的区别 HTTP方法 HTTP 状态码 小结 ...

最新文章

  1. 【分析函数】Oracle分析函数之LAG和LEAD
  2. python输入语句-python2 和 pyhton3 输入语句写法
  3. 面试官:一千万数据,怎么快速查询?
  4. java udp 同一个端口_java – 系统中的两个不同的UDP套接字可以绑定相同的端口吗?...
  5. (译文)JavaScript基础——JavaScript中的深拷贝
  6. getParentalNodePaths、osg::NodePathList、osg::NodePath详解
  7. LOAM_velodyne学习(三)
  8. 小米登录协议分析_小米温湿度传感器协议分析
  9. 前端开发 get请求与post请求 0228
  10. 深度学习 | Why and How:神经网络中的权重初始化
  11. Python学习笔记之类(二)
  12. 在MacOS和iOS系统中使用OpenCV
  13. IE haslayout总结
  14. 摄影系列:李涛ps视频教程笔记
  15. 股票 - - 常用指标【下】
  16. 【经典产品思维】引领“用户消费”的产品怎么做?
  17. Kali Linux速查手记(长期更新)
  18. Android屏幕适配方案
  19. 厚物科技《什么是PXI》
  20. 深入浅出FE(十四)深入浅出websocket

热门文章

  1. gmr 通信 matlab,matlab使用TCP/IP Server Sockets
  2. Travis CI mysql_DevOps工具介绍连载(34)——Travis CI
  3. Python基础教程:内置类型之数值
  4. python实现验证码与进度条
  5. python与rpc服务
  6. python 查询文本文件的层次
  7. 计算机基础中怎么评价,浅谈职校计算机基础教学中的教学评价
  8. Linux是否兼容windows跨区卷,简单卷与跨区卷的区别介绍
  9. java逻辑可以判断文本么_Shell逻辑判断符号_Shell中的_与_或_非_Shell_-a_-e_!作用
  10. 为什么要把CV_8UC3(Vec3b)无符号整型转换成CV_32F(Vec3F)32位浮点数据类型?(在高精度下处理)