zoukankan      html  css  js  c++  java
  • 什么是Socket

    Socket 是什么:
    Socket是应用层与tcp/ip 协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它吧复杂的
    tcp/ip协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,衣服和指定协议。
    所以,我们无需深入理解tcp/udp协议,Socket已经为我们封装好了,我们只需要遵循Socket的规定去编程,写出的程序自然就是遵循
    tcp/udp标准的。

    套接字发展史及分类:
    套接字起源于20世纪70年代加利福尼亚大学伯克利分院版本的Unix,既人们所说的BSD Unix。因此,有时人们也罢套接字称为“伯克利
    套接字”或“BSD套接字”。一开始,套接字被设计用在同一台主机上多个应用程序之间的通讯或IPC。套接字有两种(或者称为有两个
    种族),分别是基于文件型的和基于网络型的。

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

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

    套接字工作流程
    一个生活中的场景。你要打电话给一个朋友,先拨号,朋友听到电话铃声后提起电话,这时你和你朋友就建立起了连接,就可以讲话了。
    等交流结束,挂断电话结束此次交谈。生活中的场景就是解释了这工作原理。
    先从服务器端说起。服务器先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。
    在这时如果有一个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户
    端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。
  • 相关阅读:
    leetcode 13. Roman to Integer
    python 判断是否为有效域名
    leetcode 169. Majority Element
    leetcode 733. Flood Fill
    最大信息系数——检测变量之间非线性相关性
    leetcode 453. Minimum Moves to Equal Array Elements
    leetcode 492. Construct the Rectangle
    leetcode 598. Range Addition II
    leetcode 349. Intersection of Two Arrays
    leetcode 171. Excel Sheet Column Number
  • 原文地址:https://www.cnblogs.com/kingforn/p/11395002.html
Copyright © 2011-2022 走看看