socket编程 套接字编程 (纯理论,以后补一下实现代码)
基本概念
套接字——应用层和传输层之间,提供应用传输接口
Web/RPC/中间件——应用层之上的网络开发
应用编程接口API(application programming interface)
套接字接口(socket interface)简称套接字,是一种API。
socket API
一个进程可能会创建多个套接字,不同的进程会创建自己的套接字。
当客户端创建套接字希望与服务端进行通信时,通过端口号来分辨与服务端的哪一个应用进程进行通信(为什么不通过IP地址进行分辨,因为服务端主机上有多个应用进程在运行,每个应用进程可能会使用多个套接字。单单通过IP地址不足以分辨出是与哪一个套接字进行通信)
套接字对内对外使用的管理机制不同
标识通信端点(对外)——IP地址+端口号——这是针对TCP/IP的
操作系统/进程如何管理套接字(对内)——套接字描述符(socket description)
一个进程创建一个套接字的时候,会返回一个套接字描述符。操作系统在管理内部套接字的时候,都是通过套接字描述符来引用的(操作系统使用套接字描述符来管理套接字的时候, 就是一种套接字抽象机制,这种抽象机制类似于文件的抽象。Unix操作系统对于套接字管理和文件管理,是一个管理,也就是说他把套接字看成是一个特殊的文件;Windows操作系统是分开管理的。)。
socket API函数
1、socket函数——创建套接字
调用socket函数成功之后,会返回一个套接字描述符(sd)
socket函数的三个参数:
1)、Protofamily)(协议族)——用于说明我的套接字面向哪种协议
2)、tyep(套接字类型)
3)、proto(协议号)
值为0代表用的是默认协议
例子——创建流套接字代码段
2、closesocket函数——关闭连接(Unix中的函数名是close,没有socket,记住)
3、bind函数——为套接字设置本地端点地址信息(即IP地址+端口号)
、
熟知端口号——web服务器就是80,sftp是25,以此类推
客户端一般不必调用bind函数
如果服务器有多个网卡,也就是有多个IP地址,该如何处理,绑定哪一个IP地址呢——使用地址IP体制通配符 INADDR_ANY
4、listen函数——服务端监听状态
5、connect函数——客户端
6、accept函数
当服务器调用accept,取走客户端的连接请求之后,就会创建新的套接字。真正与客户端创建连接的,就是这个新套接字。
7、send,sendto函数——用于发送数据
8、recv、recvfrom函数——用于接受数据
9、setsockopt、getsockopt——套接字参数设置和套接字参数读取
套接字面向TCP/IP可以创建的服务类型
应用层要通信,就要创建套接字。套接字假期了应用层和传输层的一个接口。
如果我创建的套接字的面向TCP的,就是流式套接字;如果是面向UDP而创建的套接字,就是数据报套接字;如果是直接面向网络层的套接字,则是原始套接字。
网络应用中Socket API(TCP)调用的基本流程
客户端软件的设计
1、解析各个功能函数
2、TCP客户端软件流程
3、UDP客户端软件流程
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
PostgreSQL技术周刊第3期:PostgreSQL数据库排行再创新高
PostgreSQL(简称PG)的开发者们: 云栖社区已有5000位PG开发者,发布了3000+PG文章(文章列表),沉淀了700+的PG精品问答(问答列表)。 PostgreSQL技术周刊将会为大家介绍最新的PG技术与动态、预告活动、最热问答、直播教程等,欢迎大家订阅PostgreSQL技术周刊和关注PostgreSQL社区公众号。 最新动态: PostgreSQL 数据库排行再创新高,积分大幅上扬 20.85 分 2018年11月数据库流行度排行榜已经出炉,让人意外的是,这个月 Oracle 的积分和 MySQL 双双下滑,PostgreSQL 排在第四位,积分大幅上扬 20.85 分,较去年同期增长了 60.33 分,是前十名中增幅最大的数据库产品。 PostgreSQL 10 高可用 本地SSD盘 版本发布 发布 PostgreSQL 10 高可用版,相比原9.4高可版新增以下特性,如多功功能、并行顺序扫描、联合和聚合、支持词组的全文检索以及表分区等。 PostgreSQL官方并行更新时间表 2013年10月,创建了两个主要的基础架构。2014年11月,Amit Kapila发...
- 下一篇
Spring MVC概述
前面写了一些Spring MVC的文章,但是若要问我Spring MVC是什么,一时我可能还想不到合适的话让刚接触Spring MVC的人立刻明白。这次就要解释下Spring MVC是什么。 Spring MVC围绕着DispatchServlet进行设计,DispatchServlet用来分发请求到处理器,我们可以使用 Spring MVC是什么? Spring MVC是Spring中的一个重要模块。作为开源的Java EE应用框架,很多Web应用都是由Spring来支撑的。在Web应用中,MVC的模式使用已经广为人知。如果Spring MVC没有自己实现的MVC模式支持,那么作为一个整体的解决方案,它是不完整的。 Spring MVC的特点 首先它的本质是一个封装好的Servlet。 Servlet的运行需要一个容器,如Tomcat。Servlet容器帮助我们做了很多底层的麻烦的工作,让我们开发网站变的简单。而Spring MVC则在Servlet基础之上又做了一层封装,这样我们连Servlet都不用写了,只需要写最核心的业务就可以了。而且Spring MVC使用起来非常灵活,我们...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Hadoop3单机部署,实现最简伪集群