Python中的socket模块
Python网络编程离不开socket模块
1. socket模块的简单使用,以开发一个简单的命令行工具为例,如下
1.1 socket client 端代码
1 # -*- coding:utf-8 -*- 2 # Author:Wong Du 3 4 import socket 5 6 # 创建一个socket对象 7 client = socket.socket() 8 # 与服务器端建立连接 9 client.connect( ('localhost', 9494) ) 10 11 12 while True: 13 # 获取用户输入内容 14 cli_send = input(">>: ").strip() 15 # 判断用户输入是否为空 16 if len(cli_send) == 0: 17 continue 18 19 # 给服务器端发送数据,必须为bytes类型 20 client.send(cli_send.encode(encoding="utf-8")) 21 22 # 接收服务器端返回的数据, 102400为接收数据的大小 23 data = client.recv(102400) 24 # 查看接收到的数据 25 print(data.decode()) 26 27 # 关闭连接 28 client.close()
1.2 socket server 端代码
# -*- coding:utf-8 -*- # Author:Wong Du import os import socket # 创建一个socket连接 server = socket.socket() # 绑定相应的IP和端口号 server.bind( ('localhost', 9494) ) # 开始监听, 5为监听最大连接数 server.listen(5) print("我要开始监听了~~") # 等待请求连接,卡住;conn为连接对象,addr为连接身份 print("正在等待客户端请求连接~~") conn, addr = server.accept() print("接收到客户端连接,身份是: ", addr) while True: # 接收客户端发来的命令,1024为接收数据的大小 data = conn.recv(1024) # 执行命令并接收命令返回结果 res = os.popen(data.decode()).read() # 如命令无返回结果 if not res: res = 'Invalid command..' # 将命令返回结果发给客户端,数据必须是bytes类型 conn.send(res.encode(encoding='utf-8')) # 关闭连接 server.close()
静静的学习一阵子儿...