99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

《Python程序設(shè)計(jì)》實(shí)驗(yàn)三報(bào)告

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

掃碼添加小助手

加入工程師交流群

1.實(shí)驗(yàn)內(nèi)容

創(chuàng)建服務(wù)端和客戶端,服務(wù)端在特定端口監(jiān)聽(tīng)多個(gè)客戶請(qǐng)求。客戶端和服務(wù)端通過(guò)Socket套接字(TCP/UDP)進(jìn)行通信。

要求:

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

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

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

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

2. 實(shí)驗(yàn)過(guò)程及結(jié)果

(1)設(shè)計(jì)思路

該實(shí)驗(yàn)?zāi)繕?biāo)是制作一個(gè)基于socket的通訊器,根據(jù)之前課上學(xué)習(xí)的內(nèi)容及課后作業(yè),本次實(shí)驗(yàn)不難完成。

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

(2)主要代碼介紹

部分代碼有參考。

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

加解密部分:

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

from pyDes import des, CBC, PAD_PKCS5

import binascii

key_ = ‘12345675’

def des_encrypt(s):

“”“

DES 加密

:param s: 原始字符串

:return: 加密后字符串,16進(jìn)制

”“”

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進(jìn)制

: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請(qǐng)選擇想要使用的功能:’)

if ch == ‘1’:

str_ = input(‘請(qǐng)輸入要傳輸?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(‘無(wú)該選項(xiàng),請(qǐng)重新輸入’)

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ù),并寫(xiě)入文件中。取‘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)聽(tīng)中。..’)

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

    關(guān)注

    3

    文章

    262

    瀏覽量

    31025
  • 語(yǔ)言編程
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    10047
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4827

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    天合跟蹤獲得DNV第方風(fēng)洞測(cè)試審查報(bào)告

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

    委托測(cè)試報(bào)告和型式檢驗(yàn)報(bào)告什么區(qū)別

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

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

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

    零基礎(chǔ)入門(mén):如何在樹(shù)莓派上編寫(xiě)和運(yùn)行Python程序?

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

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

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

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

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

    Python Connector for InterBase連接解決方案

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

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

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

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

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

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

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

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

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

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

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

    加法運(yùn)放電路實(shí)驗(yàn)報(bào)告數(shù)據(jù)分析

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

    WLAN層組網(wǎng)實(shí)驗(yàn)解析

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

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

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