在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

《Python程序設計》實驗三報告

li5236 ? 來源:博客園 ? 作者:博客園 ? 2022-03-30 15:21 ? 次閱讀

1.實驗內容

創建服務端和客戶端,服務端在特定端口監聽多個客戶請求。客戶端和服務端通過Socket套接字(TCP/UDP)進行通信

要求:

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

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

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

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

2. 實驗過程及結果

(1)設計思路

該實驗目標是制作一個基于socket的通訊器,根據之前課上學習的內容及課后作業,本次實驗不難完成。

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

(2)主要代碼介紹

部分代碼有參考。

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

加解密部分:

基于pyDes庫實現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

客戶端部分:

循環發送字符串給服務器。取‘close_’作為關閉連接的保留字。

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(‘連接服務器成功’)

while True:

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

if ch == ‘1’:

str_ = input(‘請輸入要傳輸的內容:’)

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(‘連接已關閉’)

服務器部分:

循環接收客戶端發送的數據,并寫入文件中。取‘close_’作為關閉連接的保留字。

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(‘服務器已創建,正在監聽中。..’)

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_ = ‘服務器已接收:’+str(data)

str_ = des_encrypt(str_.encode())

conn.sendall(str_)

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

s.close()

print(‘服務器關閉’)

(4)程序結果

客戶端:

發送字符串:

pYYBAGJEBTqAFNvpAACUbGDumuk707.png

發送文件

pYYBAGJEBUOARje3AAO3NxS4ZAE036.png

結束連接

pYYBAGJEBU2AHG0HAADivBd--cw344.png

服務器:

pYYBAGJEBVaAUKpUAACXU-zdY10605.png

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 程序設計
    +關注

    關注

    3

    文章

    261

    瀏覽量

    30412
  • 語言編程
    +關注

    關注

    0

    文章

    23

    瀏覽量

    9934
  • python
    +關注

    關注

    56

    文章

    4799

    瀏覽量

    84817
收藏 人收藏

    評論

    相關推薦

    在RK3568教學實驗箱上實現基于YOLOV5的算法物體識別案例詳解

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

    第5章 MATLAB程序設計.ppt

    第5章 MATLAB程序設計
    發表于 10-24 16:40 ?0次下載

    TMS320DM6441功耗摘要應用程序報告

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

    加法運放電路實驗報告數據分析

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

    WLAN層組網實驗解析

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

    Python建模算法與應用

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

    python訓練出的模型怎么調用

    Python中,訓練出的模型可以通過多種方式進行調用。 1. 模型保存與加載 在Python中,訓練好的模型需要被保存,以便在其他程序或會話中使用。以下是一些常用的模型保存和加載方法。 1.1
    的頭像 發表于 07-11 10:15 ?2060次閱讀

    最簡單的C程序設計

    電子發燒友網站提供《最簡單的C程序設計.pptx》資料免費下載
    發表于 05-28 16:41 ?10次下載

    算法-程序設計的靈魂

    電子發燒友網站提供《算法-程序設計的靈魂.pptx》資料免費下載
    發表于 05-28 16:39 ?3次下載

    程序設計基礎教程

    電子發燒友網站提供《程序設計基礎教程.pptx》資料免費下載
    發表于 05-28 16:37 ?1次下載

    DSP軟件 MATLAB仿真實驗報告

    電子發燒友網站提供《DSP軟件 MATLAB仿真實驗報告.pdf》資料免費下載
    發表于 03-24 09:49 ?13次下載

    愛立信消費者實驗報告發布

    近日,愛立信發布了最新一期《愛立信消費者實驗報告》,該報告首次在全球范圍內對消費者對5G固定無線接入(FWA)的看法進行了深入調查。該研究覆蓋了19個國家,代表了12億人居住區域的3.7億個家庭,為運營商提供了寶貴的洞察和策略
    的頭像 發表于 03-06 09:19 ?752次閱讀

    基于Python的地圖繪制教程

    本文將介紹通過Python繪制地形圖的方法,所需第Python相關模塊包括 rasterio、geopandas、cartopy 等,可通過 pip 等方式安裝。
    的頭像 發表于 02-26 09:53 ?1256次閱讀
    基于<b class='flag-5'>Python</b>的地圖繪制教程

    如何使用linux下gdb來調試python程序

    如何使用linux下gdb來調試python程序? 在Linux下,可以使用GDB(GNU調試器)來調試Python程序。GDB是一個強大的調試工具,可以幫助開發者診斷和修復
    的頭像 發表于 01-31 10:41 ?2666次閱讀

    單片機交通燈程序設計中斷系統

    隨著社會的發展,交通問題逐漸突出,特別是城市交通問題愈加嚴重。為了更好地管理和調控交通,提高交通流暢度和安全性,交通燈系統成為了城市交通管理的重要組成部分。而單片機交通燈的程序設計中斷系統,則是實現
    的頭像 發表于 01-24 16:16 ?1145次閱讀
    主站蜘蛛池模板: 天天av天天翘天天综合网| 国产叼嘿网站免费观看不用充会员| 欧美高清一级| 伊人久久综合成人亚洲| 久久精品国产夜色| 色多多视频成人影院| 美女视频黄a视频美女大全| 仓本c仔国产精品| 欧美成人午夜影院| 午夜视频免费观看| bt 电影天堂| 色婷婷社区| 亚洲精品卡1卡二卡3卡四卡| 鸥美毛片| 91亚洲国产成人久久精品网站| 久久久久久亚洲精品| 偷自在线| 午夜高清在线| 哪里可以看免费毛片| 免费午夜网站| 五月激情丁香网| yy8090韩国日本三理论免费| 午夜dy888理论三级| 性满足久久久久久久久| 亚洲精品成人网| 亚洲视频在线免费看| 91av视频网站| 亚洲系列中文字幕一区二区| 99久久国产免费 - 99久久国产免费 | 涩狠狠狠狠色| 一区二区三区无码高清视频| 欧美在线网站| 黄色在线播放网址| 69日本xxxxxxxxx18| 在线网站你懂| 亚洲色图国产精品| 一级日本大片免费观看视频| 一二三区乱码一区二区三区码| 日韩一级片在线观看| 欧美性久久| 久青草国产手机视频免费观看|