20193207《Python程序设计》实验三报告

课程:《Python程序设计》
班级: 1932
姓名: 倪思涵
学号:20193207
实验教师:王志强
实验日期:2020年5月16日
必修/选修: 公选课

1.实验内容

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

2. 实验过程及结果

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

  1. 完成多个客户端能同时给服务端发送信息;

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。

参考资料

posted @ 2020-05-18 14:35  20193207倪思涵  阅读(139)  评论(0编辑  收藏