Python >>> socket 传输图片

2022-08-21 08:46:12

前言

本文关于如何使用socket 进行图片的传输

开始

1)客户端

  1. 先将需要传输的图片转化为文件流:
files=open("C:/Users/Desktop/机器人.jpg",'rb')
  1. 然后建立socket 连接:
# 创建一个socket
s= socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 建立连接
s.connect(('www.xxx.com',8008))
  1. 通过将文件流转化为适合传输的大小的字节数据:
data= files.read(1024)
  1. 发送:
s.send(data)
  1. 关闭连接:
files.close()   
s.close()

完整代码如下:

# --coding:utf-8--import socket

files=open("C:/Users/Desktop/机器人.jpg",'rb')# 创建一个socket
s= socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 建立连接
s.connect(('www.xxx.com',8008))while(True):
    data= files.read(1024)ifnot data:break 
    s.send(data)
    
files.close()   
s.close()

2)服务端

  1. 开启端口监听:
# 建立Socket
s= socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('127.0.0.1',8008))
  1. 对需要将接收数据保存下来后所存储的文件路径转化为文件流:
files=open("ROBOT.jpg",'wb')
  1. 按照某一适合接收的大小接收数据并写入图片路径:
whileTrue:# 指定最大接收量
    data= sock.recv(1024)
    files.write(data)ifnot data:break
  1. 关闭连接:
files.close()# 关闭Socket
sock.close()

完整代码如下:

#coding:utf-8import socketimport threading# 建立Socket
s= socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('127.0.0.1',8008))
files=open("ROBOT.jpg",'wb')# 开始监听端口,最多同时建立5个连接
s.listen(5)print('Waiting for connection...')deftcplink(sock, addr):print('Accept new connection from %s:%s...'% addr)# 发送数据
    sock.send(b'Welcome!')# 接收数据whileTrue:# 指定最大接收量
        data= sock.recv(1024)
        files.write(data)ifnot data:break
    files.close()# 关闭Socket
    sock.close()print('Connection from %s:%s closed.'% addr)# 等待连接whileTrue:
    sock, addr= s.accept()# 建立新进程
    t= threading.Thread(target=tcplink, args=(sock, addr))
    t.start()
  • 作者:诺亚方包
  • 原文链接:https://waao666.blog.csdn.net/article/details/103334463
    更新时间:2022-08-21 08:46:12