15. 进程间通讯与网络库

本库主要提供了不同进程之间通讯,以及不同网络之间的进程通讯。

15.1 socket--网络接口库

本模块提供了BSD类似的socket网络接口库,它可以使用在Unix、Windows、MacOS等系统平台上。

exception socket.herror

地址相关错误的异常。

exception socket.gaierror

调用函数getaddrinfo()或getnameinfo()出错抛出异常。

exception socket.timeout

当一个socket超时抛出的异常。

socket.AF_UNIX

socket.AF_INET

socket.AF_INET6

表示网络地址类型。

socket.SOCK_STREAM

socket.SOCK_DGRAM

socket.SOCK_RAW

socket.SOCK_RDM

socket.SOCK_SEQPACKET

socket的类型。

socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)

创建一个socket实例。参数family是socket地址类型;参数type是TCP还是UDP等类型;参数proto是协议版本号。

socket.socketpair([family[, type[, proto]]])

创建一对相互通讯的socket对象,仅用于Unix。

socket.create_connection(address[, timeout[, source_address]])

创建一个连接到指定服务器的socket对象。参数address是(主机, 端口)元组;参数timeout是连接超时时间;参数source_address是指定绑定的客户端的地址和端口。

socket.fromfd(fd, family, type, proto=0)

从一个文件描述fd来创建一个socket对象。

socket.fromshare(data)

从指定的数据data里创建一个socket对象,仅用于Windows。

socket.SocketType

Python表示socket的类型。

socket.getaddrinfo(host, port, family=0, type=0, proto=0, flags=0)

通过名称获取地址信息,返回5个元组(family, type, proto, canonname, sockaddr)的地址信息,可以用于连接服务器。

socket.getfqdn([name])

查询给出名称的域名称。

socket.gethostbyname(hostname)

把主机名称转换为IPv4地址格式。

socket.gethostbyname_ex(hostname)

使用扩展的方式把主机名称转换为IPv4地址格式。

socket.gethostname()

返回字符串表示的主机名称。

socket.gethostbyaddr(ip_address)

通过地址来获取主机名称,返回三元组的信息。

socket.getnameinfo(sockaddr, flags)

把socket地址转换为两元素的元组(主机,端口)。

socket.getprotobyname(protocolname)

通过协议名称来获取合适参数给socket()函数使用。

socket.getservbyname(servicename[, protocolname])

从服务名称和协议名称转换为合适的端口。

socket.getservbyport(port[, protocolname])

从端口转换为服务名称。

socket.ntohl(x)

转换32位网络顺序数据到主机顺序。

socket.ntohs(x)

转换16位网络顺序数据到主机顺序。

socket.htonl(x)

转换32位主机顺序数据到网络顺序。

socket.htons(x)

转换16位主机顺序数据到网络顺序。

socket.inet_aton(ip_string)

把字符串表示的IP地址转换为32位二进制表示。

socket.inet_ntoa(packed_ip)

把32位表示的IPv4地址转换为字符串表示的IP地址。

socket.inet_pton(address_family, ip_string)

从特定网络字符串表示的地址转换为二进制表示的地址。

socket.inet_ntop(address_family, packed_ip)

从特定网络二进制表示的地址转换为字符串表示的地址。

socket.CMSG_LEN(length)

返回总数据的长度。仅用于Unix。

socket.CMSG_SPACE(length)

返回recvmsg()函数接收数据缓冲区的大小。仅用Unix。

socket.getdefaulttimeout()

返回本模块默认的超时时间。

socket.setdefaulttimeout(timeout)

设置本模块的超时时间。

socket.sethostname(name)

设置主机的名称。仅用于Unix。

socket.if_nameindex()

返回网络接口信息的列表。仅用于Unix。

socket.if_nametoindex(if_name)

返回网络接口名称对应的接口索引值。仅用于Unix。

socket.accept()

接收一个连接。返回元组(连接, 地址)。

socket.bind(address)

绑定socket对象到指定地址。

socket.close()

标记socket对象已经关闭。

socket.connect(address)

连接到远程的服务器地址。

socket.connect_ex(address)

连接到远程的服务器地址,返回一个错误,不产生异常。

socket.detach()

关闭socket对象,但文件描述符还是有效的。

socket.dup()

复制一个socket对象。

socket.fileno()

返回一个socket对象的文件描述数字。

socket.get_inheritable()

如果能被子进程继承的,返回True。

socket.getpeername()

返回已经连接远端的地址。

socket.getsockname()

返回本地的地址。

socket.getsockopt(level, optname[, buflen])

返回socket设置的选项的值。

socket.gettimeout()

返回socket对象相关的超时时间。

socket.ioctl(control, option)

设置socket对象控制参数。仅用于Windows。

socket.listen(backlog)

服务器监听连接进来。参数backlog是指明接收连接的队列大小。

socket.makefile(mode='r', buffering=None, *, encoding=None, errors=None, newline=None)

绑定一个文件对象到socket对象。

socket.recv(bufsize[, flags])

从socket对象接收数据,返回包括数据bytes对象。

socket.recvfrom(bufsize[, flags])

从socket对象接收数据,返回元组(数据对象,地址)。

socket.recvmsg(bufsize[, ancbufsize[, flags]])

从socket对象接收数据和辅助数据。仅用于Unix。

socket.recvmsg_into(buffers[, ancbufsize[, flags]])

与函数recvmsg类似,不过它把数据和辅助数据都放到缓冲区。仅用于Unix。

socket.recvfrom_into(buffer[, nbytes[, flags]])

从socket对象接收数据到缓冲区,不创建新数据对象。

socket.recv_into(buffer[, nbytes[, flags]])

接收数据到指定缓冲区,不创建新数据对象返回。

socket.send(bytes[, flags])

把数据发送给socket对象。

socket.sendall(bytes[, flags])

连续地发送所有数据,或者遇到异常才返回。

socket.sendto(bytes, address)

socket.sendto(bytes, flags, address)

发送数据到指定地址,一般使用在无连接的socket。

socket.sendmsg(buffers[, ancdata[, flags[, address]]])

发送消息和辅助数据到socket对象。仅用于Unix。

socket.set_inheritable(inheritable)

设置socket对象可继承。

socket.setblocking(flag)

设置socket为阻塞,还是非阻塞状态。

socket.settimeout(value)

对阻塞的socket设置阻塞的超时时间。

socket.setsockopt(level, optname, value)

设置socket对象的可选项参数。

socket.shutdown(how)

发送socket关闭信号包给对方。

socket.share(process_id)

复制一个socket对象,并共享给目标进程。

socket.family

socket的网络分类。

socket.type

socket对象类型。

socket.proto

socket对象网络协议。

创建一个简单TCP服务器的例子:

#python 3.4
import socketHOST = ''
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print('Connected by', addr)
while True:data = conn.recv(1024)if not data: breakconn.sendall(data)
conn.close()

在这个例子里,指定主机名称为空,端口为50007,然后调用函数socket()来创建一个socket对象,接着调用函数bind()绑定,调用函数listen()监听连接,调用函数accept()来接收连接进来并创建一个socket对象,然后与这个对象进行通讯,调用函数recv()接收数据,再通过函数sendall()发送数据回去。

创建TCP客户端的例子:

#python 3.4
import socketHOST = '127.0.0.1'        # The remote host
PORT = 50007              # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.sendall(b'Hello, world')
data = s.recv(1024)
s.close()
print('Received', repr(data))

在这个例子里,指定连接本地IP地址127.0.0.1,服务器的端口为50007,调用函数socket()函数一个socket对象,调用函数connect()连接服务器,调用函数sendall()发送数据,接着调用函数recv()来接收服务器发送回来的数据,最后调用函数close()关闭socket对象。

蔡军生  QQ:9073204  深圳

15.1 socket--网络接口库相关推荐

  1. python功能强大的库_2018 年最受欢迎的15个顶级 Python 库

    原标题:2018 年最受欢迎的15个顶级 Python 库 作者 | Goutham Veeramachaneni 译者 | 陈利鑫 近日,数据科学网站 KDnuggets 评选出了顶级 Python ...

  2. rudesocket如何使用_c++ socket 客户端库 socks5 客户端 RudeSocket™ Open Source C++ Socket Library...

    介绍 一个c++ socket 客户端库 The RudeSocket™ Open Source C++ Socket Library provides a simple to use interfa ...

  3. 客户端socket通信库

    socket通信属于IO操作,因此客户端通常会将要发送的数据一次性发送至服务器,待服务器处理后然后返回结果信息给客户端.趁着离职期间比较闲,写了个客户端socket通信库,日后用得着的话就可以直接用. ...

  4. python3 模板库 好用_良心整理15个超级Python库,不要错过

    Python 是最流行和使用最广泛的 编程语言 之一,它已经超越了业界许多编程语言,名列前茅.它在开发人员中流行的原因有很多,最重要的一点就是它有大量的库供用户使用.Python 的易用性.灵活性吸引 ...

  5. python socket server库_python基础之socket与socketserver

    ---引入 Socket的英文原义是"孔"或"插座",在Unix的进程通信机制中又称为'套接字'.套接字实际上并不复杂,它是由一个ip地址以及一个端口号组成.S ...

  6. socket第三方库 AsyncSocket(GCDAsyncSocket)

    为什么80%的码农都做不了架构师?>>>    Socket描述了一个IP.端口对.它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息,再由服务器端来处理发送的这些 ...

  7. 2018 年最受欢迎的15个顶级 Python 库

    ↑ 点击上方[计算机视觉联盟]关注我们 近日,数据科学网站 KDnuggets 评选出了数据科学.深度学习.机器学习领域最受欢迎的15个python库. 图 1:根据 GitHub star 和贡献评 ...

  8. 15个顶级Python库,你必须要试试!

    ????????关注后回复 "进群" ,拉你进程序员交流群???????? 作者丨Erik van Baaren 译者丨数据黑客 https://medium.com/tech-e ...

  9. 错过这15个顶级Python库,你就不算Python程序员

    为什么我喜欢Python?对于初学者来说,这是一种简单易学的编程语言,另一个原因:大量开箱即用的三方库,正是23万个由用户提供的软件包使得Python真正强大和流行. 在本文中,我挑选了15个最有用的 ...

  10. 前 15 个 JavaScript 机器学习库

    机器学习领域新技术的迅猛发展帮助软件开发人员以前所未有的方式构建新的人工智能应用程序. 目前,大多数 AI 爱好者利用 Python 框架进行 AI 和机器学习开发. 但环顾四周,人们可能还会发现基于 ...

最新文章

  1. 腾讯2013暑期实习笔试面试总结
  2. php获取表单$_files,PHP中$_FILES的使用方法及注意事项说明
  3. 学电脑从新手到高手_小白如何学手绘插画?新手到高手必学的四套教程【614期】...
  4. bug4-UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed...
  5. KVM命令行使用工具(virsh)详解。
  6. 应用优化-HTTP缓存
  7. 第七篇,LQR、MPC工程化总结
  8. windows10彻底关闭自动更新
  9. 元搜索推荐:比比猫!(马丁编辑)
  10. tar压缩和解压文件或文件夹
  11. Oracle EBS 值集获取段限定词SQL
  12. 自己动手开发安卓版按键精灵
  13. MQTT学习笔记——MQTT协议使用
  14. pclint使用静态检测代码内存使用错误
  15. vue中下载图片到本地
  16. Metaq原理与应用
  17. PHP 图片处理类(水印、透明度、缩放、相框、锐化、旋转、翻转、剪切、反色)...
  18. 随机取样已死,蓄水池抽样称王
  19. 覆盖常见四大应用场景,华为云CDN能够更好满足企业业务加速需求
  20. 优达的Python入门课

热门文章

  1. python数值运算优先级_python格式化输出、比较优先级与数据类型。
  2. Python中的输入和输出
  3. MySQL可重复读事务隔离具体是怎么实现的?
  4. 全志T507屏幕切换的两种方式
  5. docker-/var/lib/docker数据迁移
  6. 机械工程研究生转行计算机,机械类考研可以转什么专业?能不跨专业最好,跨专业定当考虑周全...
  7. Image Signal Processing(ISP)-第四章-LSC, CC的原理和软件实现
  8. Typescript声明文件详解
  9. 分布式缓存Redis Cluster在华泰证券的探索与实践
  10. 简单讲讲设计四大原则 - 前端读《写给大家看的设计书》收获