91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

1.實驗內容

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

要求:

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

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

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

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

2. 實驗過程及結果

(1)設計思路

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

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

(2)主要代碼介紹

部分代碼有參考。

報告中只貼出了部分代碼,全部代碼已上傳碼云:服務器部分,客戶端部分,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ā)送字符串給服務器。取‘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.發(fā)送字符串 2.發(fā)送文件 3.退出\n請選擇想要使用的功能:’)

if ch == ‘1’:

str_ = input(‘請輸入要傳輸?shù)膬热荩骸?/p>

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

服務器部分:

循環(huán)接收客戶端發(fā)送的數(shù)據(jù),并寫入文件中。取‘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(‘服務器已創(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_ = ‘服務器已接收:’+str(data)

str_ = des_encrypt(str_.encode())

conn.sendall(str_)

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

s.close()

print(‘服務器關閉’)

(4)程序結果

客戶端:

發(fā)送字符串:

pYYBAGJEBTqAFNvpAACUbGDumuk707.png

發(fā)送文件

pYYBAGJEBUOARje3AAO3NxS4ZAE036.png

結束連接

pYYBAGJEBU2AHG0HAADivBd--cw344.png

服務器:

pYYBAGJEBVaAUKpUAACXU-zdY10605.png

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

    關注

    3

    文章

    263

    瀏覽量

    31704
  • 語言編程
    +關注

    關注

    0

    文章

    23

    瀏覽量

    10134
  • python
    +關注

    關注

    57

    文章

    4877

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    請問單片機開發(fā)的程序設計語言主要有哪幾種?

    單片機開發(fā)的程序設計語言主要有哪幾種?
    發(fā)表于 01-14 08:29

    LABVIEW 2023 Q1調用python后一直報錯1671

    LABVIEW 2023Q1調用python后一直報錯1671報錯信息:PythonNode_AddTwoDoubles.vi中的打開Python會話Python returned
    發(fā)表于 11-12 09:51

    termux如何搭建python游戲

    termux如何搭建python游戲 Termux搭建Python游戲開發(fā)環(huán)境的完整指南 一、Termux基礎環(huán)境準備 Termux是一款無需root即可在安卓設備上運行的Linux終端
    發(fā)表于 08-29 07:06

    挖到寶了!人工智能綜合實驗箱,高校新工科的寶藏神器

    這款實驗箱涵蓋了9門課程,包括Python程序設計、機器學習、機器視覺、深度學習、深度視覺、數(shù)字圖像處理、嵌入式系統(tǒng)及應用、語音識別與傳感器、基于視覺的機器人應用。
    的頭像 發(fā)表于 08-07 14:51 ?780次閱讀
    挖到寶了!人工智能綜合<b class='flag-5'>實驗</b>箱,高校新工科的寶藏神器

    挖到寶了!人工智能綜合實驗箱,高校新工科的寶藏神器

    和深度至關重要。這款實驗箱涵蓋了9門課程,包括Python程序設計、機器學習、機器視覺、深度學習、深度視覺、數(shù)字圖像處理、嵌入式系統(tǒng)及應用、語音識別與傳感器、基于視覺的機器人應用。從基礎的程序
    發(fā)表于 08-07 14:30

    挖到寶了!比鄰星人工智能綜合實驗箱,高校新工科的寶藏神器!

    和深度至關重要。這款實驗箱涵蓋了9門課程,包括Python程序設計、機器學習、機器視覺、深度學習、深度視覺、數(shù)字圖像處理、嵌入式系統(tǒng)及應用、語音識別與傳感器、基于視覺的機器人應用。從基礎的程序
    發(fā)表于 08-07 14:23

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

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

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

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

    跟老齊學Python:從入門到精通

    礎的學習者介紹一門時下比較流行、并且用途比較廣泛的編程語言,所以,本書讀起來不晦澀,并且在其中穿插了很多貌似與Python 編程無關,但與學習者未來程序員職業(yè)生涯有關的內容。 獲取完整文檔資料可下載附件哦?。。?! 如果內容有幫助可以關注、點贊、評論支持一下哦~
    發(fā)表于 06-03 16:10

    基于STM32 人群定位、調速智能風扇設計(程序、設計報告、視頻演示)

    基于STM32 人群定位、調速智能風扇設計(程序、設計報告、視頻演示),有需要的同學推薦下載!
    發(fā)表于 05-28 21:34

    基于STM32 人群定位、調速智能風扇設計(程序、設計報告、視頻演示)

    基于STM32 人群定位、調速智能風扇設計(程序、設計報告、視頻演示)項目下載! 純分享帖,需要者可點擊附件免費獲取完整資料~~~【免責聲明】本文系網絡轉載,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請第一時間告知,刪除內容!
    發(fā)表于 05-23 20:35

    程序設計與數(shù)據(jù)結構

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

    python入門圣經-高清電子書(建議下載)

    和Pygal 等強大的Python 庫和工具介紹,以及列表、字典、if 語句、類、文件與異常、代碼測試等內容; 第二部分將理論付諸實踐,講解如何開發(fā)個項目,包括簡單的Python 2D 游戲開發(fā)如何利用數(shù)據(jù)
    發(fā)表于 04-10 16:53

    ?如何在虛擬環(huán)境中使用 Python,提升你的開發(fā)體驗~

    。RaspberryPiOS預裝了Python3。干擾系統(tǒng)Python的安裝可能會給你的操作系統(tǒng)帶來問題。安裝第Python庫時,請務必使用正確的包管理工具。在Lin
    的頭像 發(fā)表于 03-25 09:34 ?821次閱讀
    ?如何在虛擬環(huán)境中使用 <b class='flag-5'>Python</b>,提升你的開發(fā)體驗~

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

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