当前位置: 首页 > article >正文

使用TCP协议实现智能聊天机器人

实验目的与要求

本实验是程序设计类实验,要求使用原始套接字编程,掌握TCP/IP协议与网络编程Sockets通信模型,并根据教师给定的任务要求,使用TCP协议实现智能聊天机器人。

(1)熟悉标准库socket 的用法。

(2)熟悉TCP 协议工作原理。

(3)理解端口号的概念与作用。

(4)熟悉Socket 编程。

实验原理与内容

1. 利用所安装部署好的开发环境设计编程。

2. 实现TCP协议实现智能聊天机器人。

利用TCP/IP协议与网络编程Sockets通信模型,根据任务要求,实现多进程/多线程并发机制,开发设计一个基于TCP协议实现智能聊天机器人。

编写聊天程序的服务端代码和客户端代码。完成后,先启动服务端代码,然后启动客户端程序用输入问题,服务端可以返回相应的答案。要求服务端代码具有一定的智能,能够根据不完整的问题识别客户端真正要问的问题。

验设备与软件环境

1.Windows 2003/ win7/win8/win10 操作系统。

2.Visual Studio/Pycharm及以上

实验过程与结果

服务端

import socket

# 定义主机和端口
HOST = '10.225.107.68'  # 本地主机
PORT = 8888

# 为聊天机器人定义回复
responses = {
    "你好": "你好!我能为你做些什么呢?",
    "你好吗": "我只是一个程序,但还好,谢谢你的关心!",
    "再见": "再见!祝你有个美好的一天!",
    "default": "抱歉,我不太明白你的意思。"
}

# 创建TCP/IP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 将套接字绑定到地址和端口
server_socket.bind((HOST, PORT))

# 监听传入连接
server_socket.listen(1)
print("等待连接...")

# 接受传入连接
client_socket, client_address = server_socket.accept()
print(f"来自{client_address}的连接已建立。")

# 处理客户端消息的函数
def handle_client_message(message):
    message = message.lower()
    response = responses.get(message, responses["default"])
    return response

try:
    while True:
        # 从客户端接收消息
        data = client_socket.recv(1024).decode("utf-8")
        if not data:
            break
        
        print(f"客户端:{data}")
        
        # 处理客户端消息
 response = handle_client_message(data)
        
        # 将响应发送给客户端
        client_socket.sendall(response.encode("utf-8"))
        print(f"服务器:{response}")
finally:
    # 清理连接
    client_socket.close()
    server_socket.close()

客户端

import socket

# 定义服务端主机和端口
SERVER_HOST = '10.225.107.68'
SERVER_PORT = 8888

# 创建TCP/IP套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 连接到服务端
client_socket.connect((SERVER_HOST, SERVER_PORT))

try:
    while True:
        # 从用户输入中获取消息并发送给服务器
message = input("你:")
        client_socket.sendall(message.encode("utf-8"))

        # 接收来自服务器的响应
        response = client_socket.recv(1024).decode("utf-8")
        print(f"服务器:{response}")
finally:
    # 清理连接
    client_socket.close()


http://www.kler.cn/a/474314.html

相关文章:

  • MySQL - 子查询和相关子查询详解
  • 【Leetcode 热题 100】20. 有效的括号
  • 【人工智能计算机视觉】——深入详解人工智能计算机视觉之图像处理之基础图像处理技术
  • 路由器的转发表
  • QML学习(八) Quick中的基础组件:Item,Rectangle,MouseArea说明及使用场景和使用方法
  • 数据治理如何激活企业沉睡数据价值?
  • Cline+DeepSeek-v3-软件工程的浪潮:从切图仔到AI辅助编程
  • 【Leetcode 热题 100】20. 有效的括号
  • markdown语法中的表格快速转换成word中的表格。
  • 【网页自动化】篡改猴入门教程
  • C#标识符和关键字
  • 2025.01.15docker
  • Pytorch单、多GPU和CPU训练模型保存和加载
  • C++二十三种设计模式之观察者模式
  • 强化学习入门谈
  • Linux C/C++编程-UDP套接字编程示例
  • 微软人工智能研究院推出OLA-VLM:一种以视觉为中心的方法来优化多模态大型语言模型
  • Redis Stream
  • Git指令
  • 一文读懂单片机的串口
  • 基于R语言的DICE模型实践技术应用;评估气候变化对经济的影响以及不同减排政策的经济成本和效益
  • Dify进阶:使用FastAPI和Selenium构建远程浏览器控制与录屏服务
  • 蓝桥杯python省赛备战day2--数组枚举--845数组中的最长山脉-枚举算法刷题学习笔记3--leetcode
  • NoSQL 基础知识总结
  • python【数据结构】
  • RabbitMQ中的配置文件advanced.config