python中使用socket服务发送接收图像

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()

相关推荐

  1. python使用socket服务发送接收图像

    2024-01-06 13:18:03       33 阅读
  2. C# Socket发送接收结构体

    2024-01-06 13:18:03       18 阅读
  3. python使用rabbitmq发送消息和接收消息数据

    2024-01-06 13:18:03       22 阅读
  4. pythonsocket传输图片

    2024-01-06 13:18:03       27 阅读
  5. Socket通讯使用的坑-消息合并发送

    2024-01-06 13:18:03       45 阅读
  6. Socket通讯使用的坑-消息合并发送-解决方法

    2024-01-06 13:18:03       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-06 13:18:03       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-06 13:18:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-06 13:18:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-06 13:18:03       18 阅读

热门阅读

  1. Jtti:为什么建议企业使用存储型服务器?

    2024-01-06 13:18:03       35 阅读
  2. A Tour of Go部分练习

    2024-01-06 13:18:03       40 阅读
  3. 设置模式:适配器模式

    2024-01-06 13:18:03       34 阅读
  4. Linux平台下gcc安装升级

    2024-01-06 13:18:03       44 阅读
  5. Kendo UI for Angular 学习笔记

    2024-01-06 13:18:03       42 阅读
  6. Redhat(liunx)连接虚拟机

    2024-01-06 13:18:03       23 阅读
  7. 阿里的通义灵码在android studio上的使用方法

    2024-01-06 13:18:03       52 阅读
  8. 07GoF之工厂模式

    2024-01-06 13:18:03       27 阅读
  9. K8S三种发布方式和声明式资源管理

    2024-01-06 13:18:03       32 阅读