20211321 李心怡 实验三《Python程序设计》实验报告

  • 课程:《Python程序设计 实验三》
  • 班级: 202113
  • 姓名: XXX
  • 学号:XXX
  • 实验教师:XXX
  • 实验日期:2020年X月X日
  • 必修/选修: 公选课

1.实验内容

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

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

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

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

2. 实验过程及结果

from socket import *

IP = '127.0.0.1'
SERVER_PORT = 50000
BUFLEN = 1024

dataSocket = socket(AF_INET, SOCK_STREAM)

dataSocket.connect((IP, SERVER_PORT))

a = open("a.txt", 'w+')
print("Please write the things into file that you want to send :")

a.write(input("<<<"))
a.close()

a = open('a.txt', 'r')
toSend = a.read()

dataSocket.sendall(toSend.encode())

recved = dataSocket.recv(BUFLEN)

print("收到 :"+recved.decode())




dataSocket.close()
a.close()

from socket import *

IP = ''

PORT = 50000

BUFLEN = 512

listenSocket = socket(AF_INET, SOCK_STREAM)


listenSocket.bind((IP, PORT))

listenSocket.listen(8)
print(f'服务端启动成功,在{PORT}端口等待客户端连接...')

dataSocket, addr = listenSocket.accept()
print('接受一个客户端连接:', addr)

while True:

    recved = dataSocket.recv(BUFLEN)

    if not recved:
        break

    info = recved.decode()
    print(f'收到对方信息: {info}')

    dataSocket.send(f'服务端接收到了信息 {info}'.encode())


dataSocket.close()
listenSocket.close()

另一种可以循环交互的形式:

import socket
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(('127.0.0.1', 8001))
s.listen()
conn, address =s.accept()
data = conn.recv(1024)
print("收到: "+ data.decode())
data2=input("回复:")
conn.sendall(data2.encode())
while data2 != 'goodbye':
    data3 = conn.recv(1024).decode()
    print("收到: "+ data3)
    if data3 == 'goodbye':
        break
    data2 = input("回复:")
    conn.sendall(data2.encode())
s.close()
conn.close()


import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 8001))
print("Good connection!")
str = input("I say: ")
s.sendall(str.encode())
data = s.recv(1024)
print("He says: "+ data.decode())
while data.decode()!= "goodbye":
    str = input("I say: ")
    s.sendall(str.encode())
    if str == "goodbye":
        break
    data = s.recv(1024)
    print("He says: " + data.decode())

s.close()

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

  • 问题1:无法实现循环交互
  • 问题1解决方案:上网搜寻资料,在明白socket 的原理后知道啦可以如何实现交互
  • 问题2:计算机积极拒绝
  • 问题2解决方案:知道了要先链接客户端口
  • ...

其他(感悟、思考等)

遇到自己不会的要积极上网搜索资料

posted @ 2022-04-27 19:34  风雾里  阅读(93)  评论(0编辑  收藏  举报