网络程序设计 python

一、实验题目

网络程序设计

二、实验目的

  1. 了解TCP和UDP的工作原理。
  2. 了解IP地址和端口号的含义和作用。
  3. 掌握Socket编程的基本方法和步骤。
  4. 掌握常见网络程序编制方法。

三、实验内容

  1. 使用基于TCP或UDP套接字编写一个智能聊天机器人程序。

四、实验步骤

题目一

(1)问题分析(含解决思路、使用的数据结构、程序流程图等

服务器端实现步骤:

1.创建套接字:使用serverSocket=socket.socket()函数完成;

2.绑定套接字:通过serverSocket.bind(IP,port),在这里的ip使用win+R,然后输入cmd,然后输入ifconfig回车即可;

3.定义最多可容纳的等待接收的收入连接数:通过serverSocket.listen(n)函数完成;

4.进入阻塞状态:使用conn,addr=serverSocker.accpet()函数完成,等待客户发起连接请求;

5.和客户端通行:通过send(),recv()函数和客户端通行;

6.关闭连接:通过连接对象的close()函数关闭连接。

客户端实现步骤:

  1. 创建socket对象:使用clientSocket=socket.socket()函数完成;
  2. 关闭套接字:通过clientSocker.close()函数关闭套接字。
  3. 和客户端通行:通过send()、recv()函数和服务器端通行;
  4. 客户端使用自己的socket对象连接服务端:通过clientScoket.connet(IP,port)函数完成;

(2)算法/代码描述(基本要求源代码

服务器端:

import socket
serverSocket = socket.socket()                  # 创建套接字.
serverSocket.bind(('127.0.0.1', 50007))        # 绑定套接字.
serverSocket.listen(5)                           # 设置挂起的连接数.
print("等待客户端发起连接请求!")
while True:
  conn, addr = serverSocket.accept()       # 等待客户发起连接请求.
  print("客户端连接成功...")
  while True:
        try:
           recv_data = conn.recv(1024)                             # 接收信息.
           if len(recv_data) == 0:
              print("服务器: 好吧,我也退出连接!")
              break
           elif str(recv_data.decode()) == "你好":
               print("客户端:" + str(recv_data.decode()))
               send_data = "很高兴和你聊天耶!"
               conn.send(bytes(send_data, encoding='utf-8'))        # 给客户端发送信息
               print("服务器:" + send_data)
           elif str(recv_data.decode()) == "你会一直在吗?":
               print("客户端:" + str(recv_data.decode()))
               send_data = "是的,我会一直在哒!"
               conn.send(bytes(send_data, encoding='utf-8'))        # 给客户端发送信息
               print("服务器:" + send_data)
           else:
               print("客户端:" + str(recv_data.decode()))
               send_data = "对不起!暂时无法给出回应!"
               conn.send(bytes(send_data, encoding='utf-8'))  # 给客户端发送信息
               print("服务器:" + send_data)
        except Exception:
            break
        conn.close()   #关闭连接.

客户端:

import socket
clientSocket = socket.socket()                                 # 创建套接字.
clientSocket.connect(('127.0.0.1', 50007))                 # 绑定套接字.
while True:
  send_data = input("客户端: ").strip()                       # 从键盘输入信息.
  if send_data == 'exit':
    print("客户端: 我要退出连接了!")
    break
  if len(send_data) == 0:
     continue
  else:
    clientSocket.send(bytes(send_data, encoding='utf8'))        # 发送信息.
    recv_data = clientSocket.recv(1024)                                    # 接收服务器信息.
    print("服务器:" + str(recv_data.decode()))                      # 输出信息.

clientSocket.close()                                                                  # 关闭连接.

(3)运行结果(含执行结果验证、输出显示信息

网络程序设计 python_第1张图片网络程序设计 python_第2张图片

网络程序设计 python_第3张图片

网络程序设计 python_第4张图片

网络程序设计 python_第5张图片

五、出现的问题及解决的方法

出现的问题

(1)你的主机中的软件中止了一个已建立的连接。

解决办法

(1)没有解

你可能感兴趣的:(python实验,python)