python笔记 - 网络编程(十六)

python提供了两个级别访问的网络服务:

    低级别的网络服务支持基本的 Socket,提供了标准BSD Sockets API,可访问底层操作系统Socket接口的全部方法 高级别的网络服务模块 SocketServer,它提供了服务器中心类,可以简化网络服务器的开发

Socket又称套接字,应用程序通常通过套接字向网络中发出请求或应答网络请求,是主机间或一台计算机上的进程可以通信

导入:import socket 创建套接字:s = socket.socket([family[, type[, proto]]])

    family:套接字家族可以是 AF_UNIX 或者 AF_INET type:套接字类型,可以根据是面向连接还是非连接的分别为SOCK_STREAM、SOCK_DGRAM proto:默认为0

服务端套接字对象内建方法:

函数 描述 s.bind() 绑定地址(host, port)到套接字,在AF_INET下以元组形式表示地址 s.listen(n) 监听,指定最大连接数n,一般为5 s.accept() 接受客户端连接,(阻塞式)等待连接
import socket

# 创建socket对象
serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定端口
serverSocket.bind((127.0.0.1, 10086))
# 设置最大连接数
serverSocket.listen(5)
print(等待连接...)
while True:
    # 建立客户端连接
    clientSocket, addr = serverSocket.accept()
    print(f"连接地址:{
            
     str(addr)}")
    msg = 您已成功连接到服务器
    clientSocket.send(msg.encode(utf-8))
    clientSocket.close()

客户端套接字对象内建方法:

函数 描述 s.connect() 连接服务器,address格式为元组(hostname, port) s.connect_ex() 连接出错不抛出异常,返回异常码
import socket

# 创建套接字
clientSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接端口
clientSocket.connect((127.0.0.1, 10086))
# 接收小于1024数据
msg = clientSocket.recv(1024)
print(msg.decode(utf-8))

公共套接字函数:

函数 描述 s.recv(buffsize) 接收数据以字符串形式返回,指定接受最大数据量 s.send() 将字符串数据发送给连接的套接字中 s.close() 关闭套接字连接
经验分享 程序员 微信小程序 职场和发展