女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

    文章

    262

    瀏覽量

    31004
  • 語言編程
    +關注

    關注

    0

    文章

    23

    瀏覽量

    10043
  • python
    +關注

    關注

    56

    文章

    4827

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

    委托測試報告和型式檢驗報告什么區別

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

    程序設計與數據結構

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

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

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

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

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

    有沒有什么方案能實現直接用matlab或python調用D4100_usb.dll?

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

    Python Connector for InterBase連接解決方案

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

    ID讀卡器Python程序開發

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

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

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

    第5章 MATLAB程序設計.ppt

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

    TMS320DM6441功耗摘要應用程序報告

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

    深度探索RK3568嵌入式教學平臺實戰案例:設備驅動開發實驗

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

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

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

    WLAN層組網實驗解析

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

    Python建模算法與應用

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