什么是套接字socket

socket把传输层以下的协议都封装成了简单的接口,我编写基于网络通信的软件只需要调用这些接口即可,写出的程序自然是遵循tcp/udp协议的....

什么是互联网

互联网=物理连接介质+互联网通信协议

ip+port就可以标识全世界范围内独一无二的一个基于网络通信的软件

为何要用socket
目标: 编写一个C/S架构的软件

server端必须具备:
1. 服务端需要稳定运行,一直对外提供服务
2. 服务端必须绑定一个固定的地址(这个固定地址就是ip+port(端口))
3. 服务端要支持并发

基于文件类型的套接字家族

套接字家族的名字:AF_UNIX

unix一切皆文件,基于文件的套接字调用的就是底层的文件系统来取数据,两个套接字进程运行在同一机器,可以通过访问同一个文件系统间接完成通信

基于网络类型的套接字家族

套接字家族的名字:AF_INET

(还有AF_INET6被用于ipv6,还有一些其他的地址家族,不过,他们要么是只用于某个平台,要么就是已经被废弃,或者是很少被使用,或者是根本没有实现,所有地址家族中,AF_INET是使用最广泛的一个,python支持很多种地址家族,但是由于我们只关心网络编程,所以大部分时候我么只使用AF_INET)

网络基本知识看这个链接:http://www.cnblogs.com/linhaifeng/articles/5937962.html(一定要看而且要理解,是网络编程的基础)

为何学习socket一定要先学习互联网协议:

C/S架构的软件(软件属于应用层)是基于网络进行通信的

网络的核心即一堆协议,协议即标准,你想开发一款基于网络通信的软件,就必须遵循这些标准

到底什么是套接字socket,见图示

PS:可以看到在应用层和传输层的中间加了一个抽象层,Socket把传输层以下的全部封装好了,在写程序的时候只要调用Socket的接口收发数据,写出来的程序自然就是遵循互联网协议的

套接字的工作流程

PS:先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束

PS:什么是阻塞,就是服务端在监听后没有收到服务端发送的请求,这时候会一直停留在accpet这一段,所以就好比堵住了,知道请求进来会开始执行后续的代码

转载于:https://www.cnblogs.com/shizhengquan/p/10133321.html

(1)什么是socket(套接字)相关推荐

  1. day7 面向对象进阶、socket套接字

    文章目录 1. 静态方法.类方法 1.1 静态方法 1.2 类方法 2. 属性方法 3. 类的一些成员方法 4. 反射 5. 异常处理 6. socket 套接字 1. 静态方法.类方法 1.1 静态 ...

  2. 三、初识Socket套接字结构体

    一.初识Socket套接字结构体 1.通用套接字结构体类型 struct sockaddr{sa_family_t sa_family; //协议簇char sa_data[14]; //协议簇数据} ...

  3. 基于UDP协议的socket套接字编程 基于socketserver实现并发的socket编程

    基于UDP协议 的socket套接字编程 1.UDP套接字简单示例 1.1服务端 import socketserver = socket.socket(socket.AF_INET,socket.S ...

  4. Python 技术篇-socket套接字实现两个窗口间消息传递实例演示,TCP实现

    上一篇:Python 技术篇-socket 套接字实现服务器客户端消息传递,UDP 实现 本篇介绍用 TCP 来实现. socket 实现客户端服务器的消息传递有 TCP 和 UDP 两种方式. TC ...

  5. Python 技术篇-socket套接字实现服务器客户端消息传递实例演示,UDP实现

    上一篇:Python 技术篇-socket 套接字实现两个窗口间消息传递,TCP 实现 本篇介绍用 UDP 来实现. socket 套接字实现服务器客户端消息传递有 UDP 和 TCP 两种形式.他们 ...

  6. java实现套接字网络编程_Java网络编程(一)Socket套接字

    一.基础知识 1.TCP:传输控制协议. 2.UDP:用户数据报协议. 二.IP地址封装 1.InetAddress类的常用方法 getLocalHost() 返回本地主机的InetAddress对象 ...

  7. C语言socket bind()函数(为socket套接字关联了一个相应的地址与端口号)

    #include <sys/socket.h>int bind(int socket, const struct sockaddr *address, socklen_t address_ ...

  8. Python开发基础----异常处理、socket套接字基础1

    异常处理 错误 程序里的错误一般分为两种: 1.语法错误,这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正 2.逻辑错误,人为造成的错误,如数据类型错误.调用方法错误等,这些解 ...

  9. socket 套接字的基本概念

    什么是套接字: socket套接字:一套网络通信的接口 (API), 一套函数, 本质是伪文件. 在网络环境中唯一的标识一个进程需要 IP 和端口,这个进程就是 socket,因此 socket 需要 ...

  10. 网络编程(part11)--socket模块方法及socket套接字属性

    鄙人学习笔记 文章目录 socket模块方法及socket套接字属性 部分socket模块方法 举个例子 套接字属性 举个例子 写个案例 socket模块方法及socket套接字属性 部分socket ...

最新文章

  1. 沈阳药科大学计算机基础网址,2016年沈阳药科大学药学信息学1016计算机技术基础之C程序设计复试笔试最后押题五套卷...
  2. CDH Yarn资源动态分配 - 指定资源限制 公平调度具体设置
  3. r语言lm函数_如果R语言自带函数不能用,那我就自己写一个
  4. Zabbix(一)安装zabbix监控服务配置与添加agent主机的三种方式
  5. 如何弹出一个模式窗口来显示进度条 .
  6. 汇编语言二进制转十进制_汇编语言笔记(一)——基础知识
  7. git提交本地代码到新分支
  8. nyoj-488 素数环 +nyoj -32 组合数 (搜索)
  9. position的absolute;fixed;relative;static;inherit属性小结
  10. 苹果手机使用说明书_使用苹果手机怎么设置重要提醒事项?
  11. 按键精灵手机助手php通讯,按键精灵手机助手教程_按键精灵手机助手怎么连接手机...
  12. java 取色器_Arava: 用 swing 写一个取色器
  13. java io和nio_Java IO与NIO比较
  14. Python分析上证指数历史数据,发现估值还不够低……
  15. 连接中国移动彩信网关发送彩信
  16. 南京邮电大学汇编——实验一:汇编语言语法练习与代码转换
  17. 我今天人品大爆发啊,赚了299美元
  18. 今日头条网页数据采集接口
  19. OpenCV:03图像的算数运算
  20. 如何获取网站的HTTPS证书?

热门文章

  1. c语言实验 正弦csdn,实验2 正弦波振荡器(LC振荡器和晶体振荡器)
  2. linux手动注入网络数据_Linux网络 - 数据包的接收过程【转】
  3. css3d模型做法,CSS3 3D房屋模型
  4. Element UI 中table的验证
  5. 计算机更新安装失败,电脑更新安装失败
  6. Jupyter notebook基础教程(启动,汉化,操作)
  7. 【SCOI2005】【BZOJ1083】繁忙的都市(MST模板)
  8. linux websocket服务安全组,在 linux 下安装并使用 websocket
  9. HTML表格修改字段,HTML表格 – 更改列中单个单元格的宽度
  10. 列表转化成数组_30. 把数组排成最小的数