import pickle
import socket
IP = "172.17.9.95"
PORT = 8081
def sendData(server, data): # 向边缘端发送数据
str = pickle.dumps(data) # 将数据打包好
server.send(len(str).to_bytes(length=6, byteorder='big')) # 向边缘端发送数据的长度
server.send(str) # 向边缘端发送数据
def receiveData(server): # 接收边缘端的数据
while True:
conn, addr = server.accept()
while True:
# 获取边缘端发送的数据长度
lengthData = conn.recv(6)
length = int.from_bytes(lengthData, byteorder='big')
b = bytes()
if length == 0: # 判断数据长度是否为0,是0,则进行下一次循环。
continue
count = 0
while True: # 获得从边缘端发送的数据
value = conn.recv(length)
b = b + value
count += len(value)
if count >= length:
break
data = pickle.loads(b) # 解压数据
print(data)
sendData(conn, data + 1) # 将运行结果发送到边缘端
break
if __name__ == '__main__':
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setblocking(1) # 设置为阻塞模式,直到边缘端返回结果才继续向下执行
server.bind((IP, PORT))
print("云端启动,准备接受任务")
print()
server.listen(10) # 设置socket的”排队个数“
receiveData(server)
import pickle
import socket
import threading
IP = "172.17.9.95"
PORT = 8081
def sendData(server, data): # 向边缘端发送数据
str = pickle.dumps(data) # 将数据打包好
server.send(len(str).to_bytes(length=6, byteorder='big')) # 向边缘端发送数据的长度
server.send(str) # 向边缘端发送数据
def receiveData(client): # 接受云端的数据
while True:
# 获取云端发送的数据长度
lengthData = client.recv(6)
length = int.from_bytes(lengthData, byteorder='big')
if length == 0: # 判断数据长度是否为0,是0,则进行下一次循环。
continue
b = bytes()
count = 0
while True: # 获得从云端发送的数据
value = client.recv(length)
b = b + value
count += len(value)
if count >= length:
break
data = pickle.loads(b) # 将数据解包
global MyData
MyData = data
client.close() # 断开连接
break
if __name__ == '__main__':
for i in range(10):
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((IP, PORT))
print("云端连接成功,准备提交计算任务")
print("任务已提交,进行卸载决策")
sendData(client, 1) # 从第0层开始,到第count层在云端执行,发送相关数据。
# 启动线程用于接受云端返回的后续的中间数据。
t = threading.Thread(target=receiveData, name='receiveData', args=(client,))
t.start()
t.join()
print(MyData)