当前位置:   article > 正文

python socketserver实现tcp post,get请求_3t,2够0vjvhr2哦6398

3t,2够0vjvhr2哦6398

socket模块只能实现一个服务端与一个客户端的通信,且会发生发出去接收不到或者收不全数据的随机问题,故弃之,转用socketserver实现伪http 的post和get请求,即一个服务端与多个客户端通信

一.server端

server端源码:

  1. import base64
  2. import socket
  3. import threading
  4. import os, time
  5. from loguru import logger
  6. from yolo import YOLO
  7. from io import BytesIO
  8. import socketserver
  9. import json, types, string
  10. from PIL import Image
  11. import darknet_images
  12. ip_port = ("127.0.0.1", 8080)
  13. class Model:
  14. network: int
  15. class_names: list
  16. class_colors: dict
  17. def base2jpg(data):
  18. image_data = base64.b64decode(data)
  19. file = open("./app/test_img/0.jpg", 'wb')
  20. file.write(image_data)
  21. file.close()
  22. i = Image.open('./app/test_img/0.jpg')
  23. return i
  24. class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):
  25. def handle(self):
  26. print('accept new connection from %s:%s...' % self.client_address)
  27. data1 = self.request.recv(131072)
  28. #data2 = self.recv(131072)
  29. #data = data1 + data2
  30. jdata = json.loads(data1)
  31. print(jdata)
  32. method = jdata[0]['method']
  33. global res_bytes
  34. if method == 'post':
  35. res_bytes = post(jdata)
  36. self.request.sendall(b'200ok')
  37. print(res_bytes)
  38. elif method == 'get':
  39. time.sleep(10)
  40. self.request.sendall(res_bytes)
  41. print("succeed send:", res_bytes)
  42. def post(jdata):
  43. token = jdata[0]['token']
  44. image_name = jdata[0]['imgtype']
  45. model = jdata[0]['model']
  46. data = jdata[0]['data']
  47. if token != 'bonccvlab':
  48. logger.error('400--token验证失败!,token值为{}'.format(token))
  49. # raise HTTPException(status_code=400, detail="token验证失败!")
  50. res = {'success': 400, 'message': "token验证失败", "flag": None, "icon": ""}
  51. return res
  52. if not image_name.endswith('jpg') and not image_name.endswith('png'):
  53. logger.error('400--请求字段imgtype有误')
  54. # raise HTTPException(status_code=400, detail="imgtype数据传输有误!")
  55. res = {'success': 400, 'message': "图片后缀名不是.jpg或者.png结尾", "flag": None, "icon": ""}
  56. return res
  57. # data = "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"
  58. da = str(data)
  59. i = base2jpg(da)
  60. if model == 'darknet1':
  61. flag, image_b64, detections = darknet_images.main('./app/test_img/0.jpg', model1.network, model1.class_names,
  62. model1.class_colors) # yuce
  63. elif model == 'darknet2':
  64. flag, image_b64, detections = darknet_images.main('./app/test_img/0.jpg', model2.network, model2.class_names,
  65. model2.class_colors) # yuce
  66. else:
  67. image_b64, detections = yolo.detect_image(i)
  68. res = {'success': 200, 'message': "检测成功", "model": model, "detections": detections, "icon": image_b64}
  69. res_bytes = bytes('{}'.format(res), 'utf-8')
  70. return res_bytes
  71. def get(connect, res_bytes):
  72. connect.sendall(res_bytes)
  73. print("succeed send:", res_bytes)
  74. class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
  75. pass
  76. if __name__ == "__main__":
  77. global model1, model2
  78. model1 = Model()
  79. model2 = Model()
  80. model1.network, model1.class_names, model1.class_colors = darknet_images.load_model("./yolov4-smoke.cfg",
  81. "./smoke.data",
  82. "./yolov4-smoke_38000.weights")
  83. model2.network, model2.class_names, model2.class_colors = darknet_images.load_model("./yolov4.cfg", "./coco.data",
  84. "./yolov4.weights")
  85. logger.debug("darknet模型1,2均已加载成功,服务已启动")
  86. global yolo
  87. yolo = YOLO()
  88. logger.debug("pytorch模型已加载成功,服务已启动")
  89. # Port 0 means to select an arbitrary unused port
  90. s = socketserver.ThreadingTCPServer(ip_port, ThreadedTCPRequestHandler)
  91. s.serve_forever()

 启动服务,加载模型:

收到post请求,检测物体后打印检测目标和标框后的json:

收到get请求,返回运算结果json格式(图片为base64编码):

二.post client

post client源码:

  1. import socket
  2. import json,time
  3. import socketserver
  4. # client
  5. client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #AF_INET(IPV4使用) SOCK_STREAM(TCP模式)
  6. client.connect(('127.0.0.1', 8080)) #连接本地回环地址127.0.0.1 端口号8080 以元组作为参数
  7. if __name__ == "__main__":
  8. # Port 0 means to select an arbitrary unused port
  9. msg1 = [{
  10. "method":"post",
  11. "token": "bonccvlab",
  12. "imgtype": "ldx.jpg",
  13. "time": "2021-05-14 10:31:32.680",
  14. "model": "darknet2",
  15. "data": [
  16. ["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"]
  17. ]
  18. }]
  19. jmsg1 = json.dumps(msg1)
  20. print(jmsg1)
  21. client.sendall(jmsg1.encode("utf-8"))
  22. response1 = client.recv(128)
  23. print ("Recv: ",response1.decode('utf-8'))
  24. client.close()
  25. print("连接断开")

 post请求客户端:

三.get client

get client 源码:

  1. import socket
  2. import json,time
  3. import socketserver
  4. # client
  5. client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #AF_INET(IPV4使用) SOCK_STREAM(TCP模式)
  6. client.connect(('127.0.0.1', 8080)) #连接本地回环地址127.0.0.1 端口号8080 以元组作为参数
  7. if __name__ == "__main__":
  8. # Port 0 means to select an arbitrary unused port
  9. msg1 = [{
  10. "method":"get"}]
  11. jmsg1 = json.dumps(msg1)
  12. print(jmsg1)
  13. client.sendall(jmsg1.encode("utf-8"))
  14. time.sleep(1)
  15. response1 = client.recv(131072)
  16. response2 = client.recv(131072)
  17. response1 += response2
  18. print(response1,response2)
  19. #jresp = json.loads(response)
  20. print ("Recv: ",response1.decode('utf-8'))
  21. client.close()
  22. print("连接断开")

get请求客户端:

四.图片

待检测图片:

pytorch模型检测:                                        darknet模型检测:

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/181174?site
推荐阅读
相关标签
  

闽ICP备14008679号