客户端向服务端发送请求,服务端接收到请求后根据请求类型执行不同的操作.
在Python中可以利用并导入socket与json包实现。
#导包 import socket import json as js
没有的话可以使用pip install 安装
或者在pycharm中直接安装
首先我们需要绑定服务端的IP地址与端口号
IP地址需要绑定自己的本机IP地址
# 声明IP地址以及端口号 ip = '10.11.81.177' port = 8899 # tcp通信协议 listen_socket = socket.socket(AF_INET, SOCK_STREAM) # 绑定IP地址以及端口号并接收信息 listen_socket.bind((ip, port)) listen_socket.listen() # 注:此处为服务端
然后客户端需要连接服务端的IP地址与端口
IP = '10.11.81.177' PORT = 8899 data_socket = socket.socket() data_socket.connect((IP, PORT)) # 注:此处为客户端
接着我们需要自定义请求
列如我们需要服务端输出‘人生苦短,我用Python’
# 客户端
# 自定义一个请求类型为输出字符的请求
# ask为字典类型
ask = {"type": 'Print'}
# ask_js是使用dumps转化为的json类型
ask_js = js.dumps(ask)
# 使用send发送请求且需要编码
data_socket.send(ask_js.encode())
客户端发送请求后,服务端则需要接收请求并执行
# 注:此处为服务端
# 监听客户端连接
data_socket, addr = listen_socket.accept()
# 接收客户端的请求
recv = data_socket.recv(1024)
# 将请求解码
recv_info = recv.decode()
# 将请求转换为字典
recv_dict = js.loads(recv_info)
# 获得请求类型
ask_type = recv_dict['type']
# 判断请求类型并执行操作
if ask_type == 'Print':
print('人生苦短,我用Python')
else:
print('未接收到正确请求')
先运行服务端再运行客户端得到的结果是服务端成功执行了输出字符串
如果需要自定义输出内容,可以在发送请求时携带数据
import socket
import json as js
IP = '10.11.81.177'
PORT = 8899
data_socket = socket.socket()
data_socket.connect((IP, PORT))
# 注:此处为客户端
# 自定义一个请求类型为输出字符的请求
data = input('输入字符串:')
# ask为字典类型
ask = {"type": 'Print', "Data": data}
# ask_js是使用dumps转化为的json类型
ask_js = js.dumps(ask)
# 使用send发送请求且需要编码
data_socket.send(ask_js.encode())
#---------------上为客户端,下为服务端----------------
import socket
import json as js
# 声明IP地址以及端口号
ip = '10.11.81.177'
port = 8899
# tcp通信协议
listen_socket = socket.socket()
# 绑定IP地址以及端口号并接收信息
listen_socket.bind((ip, port))
listen_socket.listen()
# 注:此处为服务端
# 监听客户端连接
data_socket, addr = listen_socket.accept()
# 接收客户端的请求
recv = data_socket.recv(1024)
# 将请求解码
recv_info = recv.decode()
# 将请求转换为字典
recv_dict = js.loads(recv_info)
# 获得请求类型
ask_type = recv_dict['type']
# 判断请求类型并执行操作
if ask_type == 'Print':
data = recv_dict['Data']
print('输出字符串:'+data)
else:
print('未接收到正确请求')
运行效果为下图所示:
第一次写博客,写的可能不太好,望见谅



