热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python局域网通信_python实现同一局域网下传输图片

简述Python可以通过网络套接字来进行传输图片这点还是比较有意思的。下面用TCP来进行实现,适用于Python3代码功能简述下面代码实现了在一个电脑上发

简述

Python可以通过网络套接字来进行传输图片

这点还是比较有意思的。

下面用TCP来进行实现,适用于Python3

代码功能简述

下面代码

实现了在一个电脑上发送图片(Sender)

实现了在另外一个电脑(也可以是同一个电脑上的不同端口)接受图片(Reciever)

只发一次,然后只收一次

新图片会在旧图片上多一个 “new_”前缀

必须要先开接受者代码才行,之后再启动发送者代码(不然发送者代码会直接被拒绝)

下面是固定了在一个电脑上(看ip地址,下面写的是127.0.0.1,如果是其他电脑就写其他电脑上的ip地址)

另外本程序只能在同一个局域网下使用(就算是广域网上,那就必须要使用广域网的ip地址)

代码

【后附解析】

Sender.py (发送者)

import socket

import os

import sys

import struct

def sock_client():

try:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect(('127.0.0.1', 6666))

except socket.error as msg:

print(msg)

print(sys.exit(1))

while True:

filepath = input('input the file: ')

# filepath = 'test.png'

fhead = struct.pack(b'128sl', bytes(os.path.basename(filepath), encoding='utf-8'), os.stat(filepath).st_size)

s.send(fhead)

print('client filepath: {0}'.format(filepath))

fp = open(filepath, 'rb')

while 1:

data = fp.read(1024)

if not data:

print('{0} file send over...'.format(filepath))

break

s.send(data)

s.close()

break

if __name__ == '__main__':

sock_client()

Reciever.py (接受者)

import socket

import os

import sys

import struct

def socket_service():

try:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

s.bind(('127.0.0.1', 6666))

s.listen(10)

except socket.error as msg:

print(msg)

sys.exit(1)

print("Wait")

while True:

sock, addr = s.accept()

deal_data(sock, addr)

break

s.close()

def deal_data(sock, addr):

print("Accept connection from {0}".format(addr))

while True:

fileinfo_size = struct.calcsize('128sl')

buf = sock.recv(fileinfo_size)

if buf:

filename, filesize = struct.unpack('128sl', 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

if __name__ == '__main__':

socket_service()

解析:

发送者代码:

还是先创建TCP套接字,并发起连接:



推荐阅读
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文详细介绍 Go+ 编程语言中的上下文处理机制,涵盖其基本概念、关键方法及应用场景。Go+ 是一门结合了 Go 的高效工程开发特性和 Python 数据科学功能的编程语言。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文介绍如何使用 Python 提取和替换 .docx 文件中的图片。.docx 文件本质上是压缩文件,通过解压可以访问其中的图片资源。此外,我们还将探讨使用第三方库 docx 的方法来简化这一过程。 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
author-avatar
小甜甜小小郭
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有