Python Socket服务端 客户端实现
socket库引入
import socket
socket关键函数
- bind() 绑定指定地址
- listen() 启动TCP监听。可设置最大连接数量
- accent() 等待TCP客户端连接(阻塞)
- connect() 主动初始化TCP服务器连接
- recv() 接收TCP数据(bytes类型)
- send() 发送TCP数据(bytes类型)
- close() 关闭嵌套字
创建嵌套字
socket.socket(socket_family,socket_type,protocal=0)
socket_family:可以选择 AF_INET(用于Internet进程间通信)或者 AF_UNIX(用于同一台机器进程间通信),实际工作中常用 AF_INET
socket_type:套接字类型,可以是 SOCK_STREAM(流式套接字,主要用于 TCP 协议)或则SOCK_DGRAM(数据包套接字,主要用于 UDP 协议)
绑定指定IP进行监听
server.bind((host, port))
host为指定IP(localhost本机地址) port为指定端口
开始监听
tcpserver.listen(len)
TCP监听,len设置最大连接数量
阻塞等待消息进入
conn, adr = server.accept()
接收TCP数据
data = conn.recv(1024)
发送TCP数据
conn.send(data)
data为发送的数据
关闭嵌套字
server.close()
服务端代码实现
import socket
server = socket.socket()
# 绑定要监控的IP
server.bind(("localhost", 6969))
# 开始监听
server.listen()
print("开始监听")
while True:
# 等待用户进入
conn, adr = server.accept()
while True:
data = conn.recv(1024)
print("接收:", data)
if not data:
break
#将接收的数据发还给客户端
conn.send(data.upper())
server.close()
客户端代码实现
import socket
client = socket.socket()
client.connect(('localhost', 6969))
while True:
context = input("")
if len(context) == 0:
continue
client.send(context.encode("utf-8"))
data = client.recv(1024)
print("数据:", data)
client.close()