客户端向服务端发送图片

1.导入需要的模块

        import socket  # 网络通信

        import struct    # 处理数据

2.建立Socjet连接

        # 创建套接字对象
        client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        # 连接服务器
        server_address = ('服务器IP地址', 端口号)
        client_socket.connect(server_address)

3.打开图片及修改文件二进制格式

        # 打开图片文件并读取数据
        image_file = open('图片文件路径', 'rb')
        image_data = image_file.read()
        image_file.close()

4.进行发送图片大小

        # 发送图片大小信息
        image_size = len(image_data)
        client_socket.send(struct.pack('!I', image_size))

5. 进行图片发送

        # 发送图片数据
        client_socket.send(image_data)

6.接收响应

        # 接收服务器响应
        response = client_socket.recv(1024)

7.关闭连接

        # 关闭套接字连接
        client_socket.close()

下面是全部代码的展示

# 客户端图片
import os.path
import socket
import sys
import struct

def sock_client_image():
    while True:
        try:
            s = socket.socket(socket.AF_INET , socket.SOCK_STREAM)
            # s.connect(("服务器ip",8989))  # 服务器和客户端在不同的系统或不同的主机下时使用的ip 和端口,首先要查看服务器所在的系统网卡的ip
            s.connect(("192.168.9.122",6666))   # 服务器和客户端都在一个系统下时使用的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)  # 将图片以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()

if __name__ == '__main__':
    sock_client_image()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值