实验三socket使用

实验三

(一)实验内容

创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。

(二)实验要求

(1)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;

(2)要求包含文件的基本操作,例如打开和读写操作。

(3)要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。

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

(三)实验报告

在规定时间前发表博客,标题“学号 实验三《Python程序设计》实验报告”

实验报告模板如下:

学号 2019-2020-2 《Python程序设计》实验x报告

课程:《Python程序设计》
班级: 2013
姓名: 蒋进
学号:20201326
实验教师:王志强
实验日期:2021年5月27日
必修/选修: 公选课

1.实验内容

此处填写实验的具体内容;
使用socket模块感受网络数据传输
服务端:

导入 socket、sys 模块

import socket
import base64

创建 socket 对象

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

获取本地主机名

host = socket.gethostname()
port = 9999

绑定端口号

serversocket.bind((host, port))

设置最大连接数,超过后排队

serversocket.listen(5)

用base64对传输文字进行加密

sendtext = "我使用socket完成作业"
file = open('sendW.txt','a+')
file.write(sendtext)
sendtex = sendtext.encode('utf-8')
enctext= base64.b32encode(sendtex)
while True:
# 建立客户端连接
clientsocket, addr = serversocket.accept()
print("连接地址: %s" % str(addr))
clientsocket.send(sendtex)
clientsocket.close()

用户端:
import socket

创建 socket 对象

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

获取本地主机名

host = socket.gethostname()

设置端口号

port = 9999

连接服务,指定主机和端口

s.connect((host, port))

接收小于 1024 字节的数据

sw = s.recv(1024)
s.close()
print (sw.decode('utf-8'))

2. 实验过程及结果

此处填写实验的过程及结果

3. 实验过程中遇到的问题和解决过程

  • 问题1:无法使用socket库
  • 问题1解决方案:将文件名由socket改为socket1
  • 问题2:base64无法加密文字。
  • 问题2解决方案:将文字写入文件
  • 问题3:base64.b64encode无法使用
  • 问题3解决方案:将b64改为b32
  • ...

其他(感悟、思考等)

认真分析python运行过程中的报错,只有看懂了报错才会真正进步。

参考资料

posted @ 2021-05-31 19:52  岳华  阅读(129)  评论(0编辑  收藏  举报