20193207《Python程序设计》实验三报告
课程:《Python程序设计》
班级: 1932
姓名: 倪思涵
学号:20193207
实验教师:王志强
实验日期:2020年5月16日
必修/选修: 公选课
1.实验内容
- 创建服务端和客户端,服务端在特定端口监听多个客户请求。
- 客户端和服务端通过Socket套接字(TCP/UDP)进行通信。
2. 实验过程及结果
1.创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;
- 完成多个客户端能同时给服务端发送信息;
3.程序代码托管到码云。https://gitee.com/ni_si_han/nsh/commit/e0275e7e4878920907fcda9042382c901728b21d
- 服务端:
client_list = []
def server_target(sever_socket):
while True:
content = sever_socket.recv(2048).decode('UTF-8')
if content is not None:
print("已经接受到数据:%s" % content)
for cl in client_list:
cl.send(content.encode('UTF-8'))
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
s.bind(('127.0.0.1', 8001))
s.listen()
while True:
c, addr = s.accept()
print('接收到的服务端有:',addr)
client_list.append(c)
threading.Thread(target=server_target, args=(c,)).start()
- 客户端:
def read_server(client_socket):
while True:
content = client_socket.recv(2048).decode('UTF-8')
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('127.0.0.1', 8001))
threading.Thread(target=read_server, args=(client_socket,)).start()
while True:
line = input('请输入您要传输的信息:')
if line is None or line == '结束': break
client_socket.send(line.encode('UTF-8'))
print("成功发送信息!")
- 运行结果:
3. 实验过程中遇到的问题和解决过程
- 问题1:对socket的代码形式不够熟悉
- 问题1解决方案:翻阅代码表
- 问题2:出现了端口被拒绝的情况
- 问题2解决方案:要先开启服务端,再开启客户端
其他(感悟、思考等)
socket的代码很难记住,大多数的情况下只能做到依样画葫芦,但是那种自己建立起一个服务端的感觉十分的良好,而且能通过客户端传输各种数据,这大大的激发了我想要继续探索python的好奇心,并且也让我看到了Python的魅力所在。这次实验也让我对socket的函数更加熟悉了。人生苦短,我用python。