服务器首先会创建一个通信端点,它能够使服务器监听请求。
客户端所需要做的只是创建它的单一通信端点,然后建立一个到服务器的连接。
有两种类型的套接字:基于文件的和面向网络的。
IPC:进程间通信。
Python只支持AF_UNIX(基于文件)、AF_NETLINK(使用标准的BSD套接字接口进行用户级别和内核级别代码之间的IPC)、AF_TIPC(透明的进程间通信)、AF_INET(基于网络)家族。
一个网络地址由主机名和端口号对组成,有效的端口号范围为0-65535(小于1024的端口号预留给了系统)。
面向连接的套接字:在进行通信之前必须先建立一个连接。这种类型的通信也称为虚拟电路或流套接字。
实现这种连接类型的主要协议是传输控制协议(TCP)。为了创建TCP套接字,必须使用SOCK_STREAM作为套接字类型。AF_INET的网络版本通常使用因特网协议(IP)来搜寻网络中的主机,所以整个系统通常结合这两种协议(TCP/IP)来进行。
与虚拟电路形成鲜明对比的是数据报类型的套接字,它是一种无连接的套接字。实现这种连接类型的主要协议是用户数据报协议(UDP)。为了创建UDP套接字,必须使用SOCK_DGRAM(即datagram)作为套接字类型。因为这些套接字也使用因特网协议来搜寻网络中的主机,所以这个系统也称作UDP/IP。
每次接收到一个新的连接就会在服务器端创建一个新的套接字来负责与该连接进行信息的交换
注意,不管是服务器端还是客户端,发送数据时,一定是发送的bytes类型的(Python3中),对于字符串类型,需要使用str.encode('...')进行编码;接受数据时,所接收到的数据类型一定是bytes类型的(Python3中),需要使用相同的编码格式进行解码,即bytes.decode('...')。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。