Python implements client-side and server-side transmission of pictures

First import the module:
import socket
import os
import sys
import struct

Create socket:

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)

Link port:

s.bind(('192.168.9.105',8989))
#服务器和客户端都在一个系统下使用的ip和端口
s.listen(10)
#最大连接数

Enter the picture in the current directory, get the picture name and send it in compressed binary form:

filepath = input('input the file:') # 输入当前录下的图片名 xxx.jpg
fhead = struct.pack(b'128sq',bytes(os.path.basename(filepath),encoding='utf-8'),
os.stat(filepath).st_size)# 将xxx.jpg以128sq的格式打包
s.send(fhead)

 Full code:

import socket
import os
import sys
import struct
def sock_client_image():
    while True:
        try:
            s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
            # s.connect(('服务器的ip',6666))# 服务器和客户端在不同的系统或不同的主机下时使用的ip 和端口,首先要查看服务器所在的系统网卡的ip
            s.connect(('192.168.9.105',8989)) # 服务器和客户端都在一个系统下时使用的ip和端口
        except socket.error as msg:
            print(msg)
            print(sys.exit(1))
        filepath = input('input the file:') # 输入当前录下的图片名 xxx.jpg
        fhead = struct.pack(b'128sq',bytes(os.path.basename(filepath),encoding='utf-8'),
                            os.stat(filepath).st_size)# 将xxx.jpg以128sq的格式打包
        s.send(fhead)

        fp = open(filepath,'rb')# 打开要传输的图片
        while True:
            data = fp.read(1024)# 读入图片数据
            if not data:
                print('{0} send over...'.format(filepath))
                break
            s.send(data) # 以二进制的格式发送图片
        s.close()
        # break  # 循环发送


if __name__ == '__main__':
    sock_client_image()

Guess you like

Origin blog.csdn.net/NOguang/article/details/131710066