python中使用socket服务发送接收图像
2024-01-03 00:26:36
python中使用socket服务发送接收图像的代码,可在服务器端中插入模型推理代码进行推理返回结果。
服务器端
# -*-coding:utf-8-*-
import os.path
import socket
import struct
def deal_image(sock, addr):
print('connection', addr)
while True:
# 计算文件信息大小
fileinfo_size = struct.calcsize('128sq')
# 接收文件信息buf
buf = sock.recv(fileinfo_size)
if buf:
# 解包
filename, filesize = struct.unpack('128sq', buf)
fn = filename.decode().strip('\x00')
new_filename = os.path.join('./', 'new_' + fn)
recvd_size = 0
# 保存图像
fp = open(new_filename, 'wb')
# 没看董
while not recvd_size == filesize:
if filesize - recvd_size > 1024:
data = sock.recv(1024)
recvd_size += len(data)
else:
data = sock.recv(1024)
recvd_size = filesize
# 写数据
fp.write(data)
# 关闭文件
fp.close()
# 关闭服务
sock.close()
break
# 建立连接
s = socket.socket()
host = socket.gethostname()
port = 12345
s.bind((host, port))
s.listen(5)
while True:
# 接收连接的地址
c, addr = s.accept()
str = 'hello,world,' + str(addr)
# 发送连接消息,以信息流的方式发送
c.send(str.encode(encoding='utf-8'))
print(addr)
# 处理接收的图像数据
deal_image(c, addr)
c.close()
客户端
# -*-coding:utf-8-*-
import os.path
import socket
import struct
# 初始化客户端建立通信
s = socket.socket()
host = socket.gethostname()
port = 12345
s.connect((host, port))
#接收消息
data = s.recv(1024).decode(encoding='utf-8')
print(data)
#发送图片文件头信息
filepath = r'./123.jpg'
fhead = struct.pack(b'123sq', bytes(os.path.basename(filepath).encode(encoding='utf-8')), os.stat(filepath).st_size)
s.send(fhead)
#发送图像
fp = open(filepath, 'rb')
while True:
data = fp.read(1024)
if not data:
print('send over')
break
s.send(data)
# 关闭连接
s.close()
文章来源:https://blog.csdn.net/threestooegs/article/details/126370076
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!