この記事の内容は、クライアント側とサーバー側の画像送信を実現するためのPythonのコードに関するもので、一定の参考価値はありますので、困っている方は参考にしていただければ幸いです。
問題: Windows をクライアントとして使用し、Linux をサーバーとして使用してグラフを転送します。
プログラム:
''' Fuction:客户端发送图片和数据 Date:2018.9.8 Author:snowking ''' ###客户端client.py 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(('127.0.0.1', 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) #将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()
###服务器端server.py import socket import os import sys import struct def socket_service_image(): 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.bind(('服务器的ip', 6666)) s.listen(10) except socket.error as msg: print(msg) sys.exit(1) print("Wait for Connection.....................") while True: sock, addr = s.accept() #addr是一个元组(ip,port) deal_image(sock, addr) def deal_image(sock, addr): print("Accept connection from {0}".format(addr)) #查看发送端的ip和端口 while True: fileinfo_size = struct.calcsize('128sq') 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 if __name__ == '__main__': socket_service_image()
実行結果:
サーバー側:
1. 最初に Linux システムでserver.py (python server.py) を実行し、次に Windows Python ターミナルで client.py を実行し、現在のディレクトリに転送するイメージの名前を入力します。ターミナル (heat .jpg) では、new_heat.jpg 画像ファイルがサーバー パスに表示され、ファイル転送が成功したことがわかります。
2. 当初、インターネット上のコードを参照すると様々なエラーが発生し、デバッグ中に受信した画像データが失われ続け、画像が開けなくなってしまいましたが、struct.packの圧縮形式を理解したところ、原因はパラメータ設定の問題で元々は128sl(lは長整数)で、その範囲を超えると受信した画像データが失われてしまうため、qに変更したところ範囲が広くなり画像が受信できるようになりました通常は。次の図は、struct.pack の圧縮形式とデータ範囲の対応表です。
関連する推奨事項:
TCP サーバーとクライアントを Python で実装する方法の詳細な説明
以上がクライアント側とサーバー側の画像送信を実装するための Python コードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Arraysinpython、特にvianumpy、arecrucialinscientificComputing fortheirefficienty andversitility.1)彼らは、fornumericaloperations、data analysis、andmachinelearning.2)numpy'simplementation incensuresfasteroperationsthanpasteroperations.3)arayableminablecickick

Pyenv、Venv、およびAnacondaを使用して、さまざまなPythonバージョンを管理できます。 1)Pyenvを使用して、複数のPythonバージョンを管理します。Pyenvをインストールし、グローバルバージョンとローカルバージョンを設定します。 2)VENVを使用して仮想環境を作成して、プロジェクトの依存関係を分離します。 3)Anacondaを使用して、データサイエンスプロジェクトでPythonバージョンを管理します。 4)システムレベルのタスク用にシステムPythonを保持します。これらのツールと戦略を通じて、Pythonのさまざまなバージョンを効果的に管理して、プロジェクトのスムーズな実行を確保できます。

numpyarrayshaveveraladvantages-averstandardpythonarrays:1)thealmuchfasterduetocベースのインプレンテーション、2)アレモレメモリ効率、特にlargedatasets、および3)それらは、拡散化された、構造化された形成術科療法、

パフォーマンスに対する配列の均一性の影響は二重です。1)均一性により、コンパイラはメモリアクセスを最適化し、パフォーマンスを改善できます。 2)しかし、タイプの多様性を制限し、それが非効率につながる可能性があります。要するに、適切なデータ構造を選択することが重要です。

craftexecutablepythonscripts、次のようになります

numpyarraysarasarebetterfornumeroperations andmulti-dimensionaldata、whilethearraymoduleissuitable forbasic、1)numpyexcelsinperformance and forlargedatasentassandcomplexoperations.2)thearraymuremememory-effictientivearientfa

NumPyArraySareBetterforHeavyNumericalComputing、whilethearrayarayismoreSuitableformemory-constrainedprojectswithsimpledatatypes.1)numpyarraysofferarays andatiledance andpeperancedatasandatassandcomplexoperations.2)thearraymoduleisuleiseightweightandmemememe-ef

ctypesallowsinging andmanipulatingc-stylearraysinpython.1)usectypestointerfacewithclibrariesforperformance.2)createc-stylearraysfornumericalcomputations.3)passarraystocfunctions foreffientientoperations.how、how、becuutiousmorymanagemation、performanceo


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ホットトピック









