Python--Socket

1)  套接字

        套接字是一种计算机网络数据结构,是网络通信端点的抽象表示。在任何类型的通信开始之前,网络应用程序必须先创建套接字。可以将它们比作电话插孔,没有它将无法进行通信。套接字有两种类型:基于文件的和面向网络的。

        基于文件的(AF_UNIX):如果两个进程运行在同一台计算机上,那么这些套接字都是基于文件的。因为文件系统是运行在同一台电脑上的多个进程之间共享的常量。

面向网络的(AF_INET/AF_INET6):在所有的地址家族中,AF_INET是使用最广泛的。

        IPC:进程间通信。

        TIPC(Transparent Interprocess Communication):透明进程间通信协议。TIPC允许计算机集群中的机器互相通信,而无须使用基于IP的寻址方式。Python对TIPC的支持,以AF_TIPC方式呈现。

2)  套接字地址:主机-端口对

        网络地址由主机名和端口号对组成(就像区号和电话号码的组成)。同时,必须有人在另一端监听。

        有效的端口号范围为0-65535(2^16-1 = 65535,小于1024的端口号为系统保留端口)。常用的端口号可以在一下网址中查看:

3)  面向连接的套接字与无连接的套接字

        (a)面向连接的套接字:在开始通信之前必须先建立一个连接。也称为虚拟电路套接字或者流套接字。面向连接的通信提供序列化的、可靠的和不重复的数据传输,并且也没有记录边界。即每条消息可以拆分成多个片段,并且每一条消息片段都确保能够到达目的地,然后将它们按顺序组合在一起,最后将完整消息传递给正在等待的应用程序。

        实现这种连接的主要协议是TCP协议(Transmission Control Protocal,传输控制协议)。创建TCP套接字,必须使用SOCK_STREAM作为套接字类型。

由于这些套接字也使用IP协议来查找网络中的主机,,这样形成的整个系统,一般由这两个协议的组合名来描述,即TCP/IP。

        (b)无连接的套接字:在开始通信之前不需要建立连接。也称为数据报类型套接字。在数据传输过程中,不保证顺序性,可靠性,不重复性。但是数据报保存了记录边界,即数据是整个发送的。比如邮政服务。

       实现这种连接的主要协议是UDP协议(User Datagrams Protocal,用户数据报协议)。创建UDP套接字,必须使用SOCK_DGRAM作为套接字类型。

       由于这些套接字也使用IP协议来查找网络中的主机,,这样形成的整个系统,一般由这两个协议的组合名来描述,即UDP/IP。

(4)Python 中的网络编程:socket()函数

        要创建套接字,必须使用socket.socket()函数,它的语法一般如下:

        socket(socket_family,socket_type, protocol=0)

        socket_family是AF_UNIX 或AF_INET,socket_type是 SOCK_STREAM或 SOCK_DGRAM。protocol 通常省略,默认为 0。示例:

        tcpSock =socket.socket(socket.AF_INET, socket.SOCK_STREAM)

        udpSock =socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    因为socket模块有很多属性,所以可以使用from module import *的方式大幅缩短我们的代码。示例:tcpSock = socket(AF_INET,SOCK_STREAM)


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值