wPython
中提供了
socket
标准库,非常底层的接口库。
Socket
是一种通用的网络编程接口,和网络层次没 有一 一对应的关系。
TCP
服务端编程
服务器端编程步骤
- 创建Socket对象
- 绑定IP地址Address和端口Port。bind()方法 IPv4地址为一个二元组('IP地址字符串', Port)
- 开始监听,将在指定的IP的端口上监听
- listen([backlog])方法。未完成连接队列和完成连接队列长度不能超过backlog,如果accept不
- 拿走就满了,就会直接拒绝连接请求。backlog可以不写,默认为5
- 获取用于传送数据的新的Socket对象 socket.accept() -> (socket object, address info) accept方法
- 阻塞等待客户端建立连接,返回一个新的Socket对象和客户端地址的二元组 地址是远程客户端的 地址,IPv4中它是一个二元组(clientaddr, port)
- 接收数据 recv(bufsize[, flags]) 使用缓冲区接收数据
- 发送数据 send(bytes)发送数据
-
# 简单的服务器例子 import socket # TCP服务端编程 server = socket.socket() # 创建socket对象 laddr = ('0.0.0.0', 9999) # 地址和端口的元组 0.0.0.0所有本地可用ip包括回环地址 server.bind(laddr) # 绑定 server.listen(1024) #backlog队列,里面放了包括已经建立好的TCP连接3次握手后的 # 等待建立连接的客户端 newsock, raddr = server.accept() # 阻塞,accept默认阻塞,队列为空 #卡在accept函数调用没有完成 data = newsock.recv(4096) # 接收客户端信息缓冲区大小一般为1024的整数倍 print(newsock.getpeername(), data) newsock.send(b"Hello cx") # 回应客户端 newsock.close() server.close() #交还fd