一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

《Python程序設(shè)計》實驗三報告

li5236 ? 來源:博客園 ? 作者:博客園 ? 2022-03-30 15:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.實驗內(nèi)容

創(chuàng)建服務(wù)端和客戶端,服務(wù)端在特定端口監(jiān)聽多個客戶請求??蛻舳撕头?wù)端通過Socket套接字(TCP/UDP)進行通信

要求:

(1)創(chuàng)建服務(wù)端和客戶端,選擇一個通信端口,用Python語言編程實現(xiàn)通信演示程序;

(2)要求包含文件的基本操作,例如打開和讀寫操作。

(3)要求發(fā)送方從文件讀取內(nèi)容,加密后并傳輸;接收方收到密文并解密,保存在文件中。

(4)程序代碼托管到碼云。

2. 實驗過程及結(jié)果

(1)設(shè)計思路

該實驗?zāi)繕耸侵谱饕粋€基于socket的通訊器,根據(jù)之前課上學(xué)習(xí)的內(nèi)容及課后作業(yè),本次實驗不難完成。

加密上選擇的是基于pyDes的CBC模式DES加密,實現(xiàn)了客服端與服務(wù)器的雙向加密通信?;赑ython標準庫tkinter,實現(xiàn)了可視化選擇目標文件的功能。但由于沒有具體實現(xiàn)tkinter窗體(極其不標準的使用方法),導(dǎo)致使用該功能后會有一個無內(nèi)容的tkinter窗體殘留,雖然不影響總體使用,但對程序的完成性和一致性有所破壞。

(2)主要代碼介紹

部分代碼有參考。

報告中只貼出了部分代碼,全部代碼已上傳碼云:服務(wù)器部分,客戶端部分,DES加解密部分

加解密部分:

基于pyDes庫實現(xiàn)DES加解密功能。

from pyDes import des, CBC, PAD_PKCS5

import binascii

key_ = ‘12345675’

def des_encrypt(s):

“”“

DES 加密

:param s: 原始字符串

:return: 加密后字符串,16進制

”“”

secret_key = key_

iv = secret_key

k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)

en = k.encrypt(s, padmode=PAD_PKCS5)

return binascii.b2a_hex(en)

def des_descrypt(s):

“”“

DES 解密

:param s: 加密后的字符串,16進制

:return: 解密后的字符串

”“”

secret_key = key_

iv = secret_key

k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)

de = k.decrypt(binascii.a2b_hex(s), padmode=PAD_PKCS5)

return de

客戶端部分:

循環(huán)發(fā)送字符串給服務(wù)器。取‘close_’作為關(guān)閉連接的保留字。

import socket

from mydes import des_descrypt, des_encrypt

from tkinter.filedialog import askopenfilename

if __name__ == ‘__main__’:

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

s.connect((‘127.0.0.1’, 8001))

print(‘連接服務(wù)器成功’)

while True:

ch = input(‘1.發(fā)送字符串 2.發(fā)送文件 3.退出\n請選擇想要使用的功能:’)

if ch == ‘1’:

str_ = input(‘請輸入要傳輸?shù)膬?nèi)容:’)

elif ch == ‘2’:

filename = askopenfilename()

with open(filename, ‘r’, encoding=‘utf-8’) as f:

str_ = f.read()

elif ch == ‘3’:

str_ = ‘close_’

str_ = des_encrypt(str_)

s.sendall(str_)

break

else:

print(‘無該選項,請重新輸入’)

str_ = des_encrypt(str_)

# print(type(str_))

s.sendall(str_)

data = s.recv(1024)

data = des_descrypt(data)

print(data.decode())

s.close()

print(‘連接已關(guān)閉’)

服務(wù)器部分:

循環(huán)接收客戶端發(fā)送的數(shù)據(jù),并寫入文件中。取‘close_’作為關(guān)閉連接的保留字。

import socket

from mydes import des_descrypt, des_encrypt

if __name__ == ‘__main__’:

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

s.bind((‘127.0.0.1’, 8001))

print(‘服務(wù)器已創(chuàng)建,正在監(jiān)聽中。..’)

s.listen()

conn, address = s.accept()

while True:

data = conn.recv(1024)

data = des_descrypt(data)

# print(data, type(data))

if data == b‘close_’:

break

else:

with open(‘received’, ‘wb’) as f:

f.write(data)

str_ = ‘服務(wù)器已接收:’+str(data)

str_ = des_encrypt(str_.encode())

conn.sendall(str_)

print(‘接收數(shù)據(jù):’, data.decode(), ‘\n已寫入received.txt文件中’)

s.close()

print(‘服務(wù)器關(guān)閉’)

(4)程序結(jié)果

客戶端:

發(fā)送字符串:

pYYBAGJEBTqAFNvpAACUbGDumuk707.png

發(fā)送文件

pYYBAGJEBUOARje3AAO3NxS4ZAE036.png

結(jié)束連接

pYYBAGJEBU2AHG0HAADivBd--cw344.png

服務(wù)器:

pYYBAGJEBVaAUKpUAACXU-zdY10605.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 程序設(shè)計
    +關(guān)注

    關(guān)注

    3

    文章

    262

    瀏覽量

    31024
  • 語言編程
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    10045
  • python
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    天合跟蹤獲得DNV第方風洞測試審查報告

    近日, 天合跟蹤獲得DNV頒發(fā)的中國支架行業(yè)首張風洞實驗方審查報告。該風洞報告由天合跟蹤與同濟大學(xué)合作,針對開拓者1P跟蹤支架進行了全新的剛性模型測壓試驗和先進動力學(xué)分析研究,并由
    的頭像 發(fā)表于 07-08 17:35 ?244次閱讀

    委托測試報告和型式檢驗報告什么區(qū)別

    委托測試報告和型式檢驗報告是兩個不同的概念,它們在認證和合規(guī)過程中都有重要作用,但它們的內(nèi)容、使用范圍和法律效力有所不同。一、委托測試報告委托測試報告是由設(shè)備制造商或產(chǎn)品進口商委托第
    的頭像 發(fā)表于 07-03 11:43 ?263次閱讀
    委托測試<b class='flag-5'>報告</b>和型式檢驗<b class='flag-5'>報告</b>什么區(qū)別

    程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)

    程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)》重點闡述了大方向內(nèi)容: 1. C語言學(xué)習(xí)中的痛點:針對當前工程師在C語言學(xué)習(xí)中的痛點,如指針函數(shù)與函數(shù)指針,如何靈活應(yīng)用結(jié)構(gòu)體等。從變量的要素(變量的類型,變量的值和變量
    發(fā)表于 05-13 16:45

    零基礎(chǔ)入門:如何在樹莓派上編寫和運行Python程序?

    在這篇文章中,我將為你簡要介紹Python程序是什么、Python程序可以用來做什么,以及如何在RaspberryPi上編寫和運行一個簡單的Pyth
    的頭像 發(fā)表于 03-25 09:27 ?752次閱讀
    零基礎(chǔ)入門:如何在樹莓派上編寫和運行<b class='flag-5'>Python</b><b class='flag-5'>程序</b>?

    是否可以使用OpenVINO?部署管理器在部署機器上運行Python應(yīng)用程序?

    使用 OpenVINO?部署管理器創(chuàng)建運行時軟件包。 將運行時包轉(zhuǎn)移到部署機器中。 無法確定是否可以在部署機器上運行 Python 應(yīng)用程序,而無需安裝OpenVINO? Toolkit 和 Python
    發(fā)表于 03-05 08:16

    有沒有什么方案能實現(xiàn)直接用matlab或python調(diào)用D4100_usb.dll?

    是32位程序而我的電腦是64位的。 由于實驗中主要用matlab編程,使用C++程序很不方便,如果能直接用matlab或python調(diào)用D4100_usb.dll就會好很多。 因此,我
    發(fā)表于 02-27 06:59

    Python Connector for InterBase連接解決方案

    適用于 InterBase 的 Python 連接器 Python Connector for InterBase 是一種可靠的連接解決方案,用于從 Python 應(yīng)用程序訪問 Int
    的頭像 發(fā)表于 01-22 14:34 ?455次閱讀

    ID讀卡器Python程序開發(fā)

    液顯ID讀卡器UDP協(xié)議開發(fā)Python程序。代碼如下: ? # pip install netifacesimport subprocessimport structimport
    的頭像 發(fā)表于 01-10 16:05 ?499次閱讀

    在RK3568教學(xué)實驗箱上實現(xiàn)基于YOLOV5的算法物體識別案例詳解

    )編寫 Python 腳本進行目標檢測 編寫一個 Python 腳本來加載模型并對圖像或視頻進行目標檢測。 、操作現(xiàn)象 實驗設(shè)備 本實驗
    發(fā)表于 12-03 14:56

    第5章 MATLAB程序設(shè)計.ppt

    第5章 MATLAB程序設(shè)計
    發(fā)表于 10-24 16:40 ?1次下載

    TMS320DM6441功耗摘要應(yīng)用程序報告

    電子發(fā)燒友網(wǎng)站提供《TMS320DM6441功耗摘要應(yīng)用程序報告.pdf》資料免費下載
    發(fā)表于 10-15 11:45 ?0次下載
    TMS320DM6441功耗摘要應(yīng)用<b class='flag-5'>程序</b><b class='flag-5'>報告</b>

    深度探索RK3568嵌入式教學(xué)平臺實戰(zhàn)案例:設(shè)備驅(qū)動開發(fā)實驗

    一、產(chǎn)品簡介TL3568-PlusTEB人工智能實驗箱國產(chǎn)高性能處理器64位4核低功耗2.0GHz超高主頻1T超高算力NPU兼容鴻蒙等國產(chǎn)操作系統(tǒng)二、實驗目的1、熟悉基本字符設(shè)備的驅(qū)動程序設(shè)計;2
    的頭像 發(fā)表于 09-24 08:05 ?877次閱讀
    深度探索RK3568嵌入式教學(xué)平臺實戰(zhàn)案例:設(shè)備驅(qū)動開發(fā)<b class='flag-5'>實驗</b>

    加法運放電路實驗報告數(shù)據(jù)分析

    加法運放電路實驗報告的數(shù)據(jù)分析主要包括對實驗結(jié)果的觀察、與理論值的對比以及誤差原因的分析。以下是一個基于常見加法運放電路實驗的數(shù)據(jù)分析示例: 一、實驗目的與原理
    的頭像 發(fā)表于 09-03 10:03 ?1840次閱讀

    WLAN層組網(wǎng)實驗解析

    最簡單的WLAN層組網(wǎng)實驗
    的頭像 發(fā)表于 08-14 17:55 ?831次閱讀
    WLAN<b class='flag-5'>三</b>層組網(wǎng)<b class='flag-5'>實驗</b>解析

    Python建模算法與應(yīng)用

    上成為理想的腳本語言,特別適用于快速的應(yīng)用程序開發(fā)。本文將詳細介紹Python在建模算法中的應(yīng)用,包括常見的建模算法、Python在建模中的優(yōu)勢、常用庫以及實際案例。
    的頭像 發(fā)表于 07-24 10:41 ?1269次閱讀