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

ChatGPT编程实现简易聊天工具

ChatGPT编程实现简易聊天工具

今天借助[[小蜜蜂]][https://zglg.work]网站的ChatGPT练习socket编程,实现一个简易聊天工具软件。

环境:Pycharm 2021

系统:Mac OS

向ChatGPT输入如下内容:

在这里插入图片描述

ChatGPT收到后,根据返回结果并进行部分修改,如下所示:

下面是一个简易的客户端-服务器聊天程序的示例代码,使用 Python 的 socket 模块实现:

服务器端代码:

import socket
import threading# 服务器端函数
def handle_client(client_socket, address):print(f"连接来自 {address}")while True:data = client_socket.recv(1024).decode('utf-8')if not data:breakprint(f"收到消息: {data}")response = input("回复消息: ")client_socket.send(response.encode('utf-8'))client_socket.close()# 创建 socket 对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 设置服务器端IP地址和端口
host = '192.168.1.21'
port = 12345# 绑定端口
server_socket.bind((host, port))# 设置最大连接数
server_socket.listen(5)print(f"服务器正在运行,监听地址为 {host}:{port}")while True:client_socket, address = server_socket.accept()client_handler = threading.Thread(target=handle_client, args=(client_socket, address))client_handler.start()

客户端代码:

为了实现服务器断开后客户端自动断开连接,在客户端代码中添加一些逻辑来检测服务器是否已经关闭。一种常用的方法是通过捕获异常来处理连接错误。下面是一个更新过的客户端代码示例,其中包含了对服务器断开情况的检测和处理:

import socket# 创建socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 服务器的IP地址和端口号
server_ip = '192.168.1.21'
server_port = 12345try:# 连接服务,指定服务器的IP地址和端口号client_socket.connect((server_ip, server_port))while True:message = input("发送消息: ")client_socket.send(message.encode('utf-8'))response = client_socket.recv(1024).decode('utf-8')print(f"收到回复: {response}")except ConnectionRefusedError:print("连接被拒绝:服务器已关闭")
except ConnectionResetError:print("连接重置:服务器断开")
finally:client_socket.close()

在这个示例中,服务器会启动并监听来自客户端的连接。每当有新的客户端连接时,服务器会创建一个新线程来处理与该客户端的通信。客户端会连接到服务器,并可以通过输入消息进行简单的聊天。

请替换服务器代码中 '服务器的IP地址' 部分为实际的服务器 IP 地址,在客户端代码中也可以相应地修改。这样就可以在两个终端上运行服务器和客户端以开始简单的C-S聊天。

分别在服务器端(服务器端代码)和客户端(客户端代码)运行聊天程序。运行结果截图如下:

屏幕截图 2024-03-17 191829

Screenshot 2024-03-17 at 19.17.50

以上示例在[小蜜蜂AI网站][https://zglg.work]完成,欢迎注册体验。

无所不能的AI时代必将成为广大程序员的最有力的助手!快快去体验吧。

相关文章:

ChatGPT编程实现简易聊天工具

ChatGPT编程实现简易聊天工具 今天借助[[小蜜蜂]][https://zglg.work]网站的ChatGPT练习socket编程,实现一个简易聊天工具软件。 环境:Pycharm 2021 系统:Mac OS 向ChatGPT输入如下内容: ChatGPT收到后,根据返回结…...

C#-用于Excel处理的程序集

在.NET开发中,处理Excel文件是一项常见的任务,而有一些优秀的Excel处理包可以帮助开发人员轻松地进行Excel文件的读写、操作和生成。本文介绍了NPOI、EPPlus和Spire.XLS这三个常用的.NET Excel处理包,分别详细介绍了它们的特点、示例代码以及…...

HTTPS基础

目录 HTTPS简介 HTTP与HTTPS的区别 CA证书 案例 服务器生成私钥与证书 查看证书和私钥存放路径 Cockpit(图像化服务管理工具) HTTPS简介 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密&…...

【Flink SQL】Flink SQL 基础概念(四):SQL 的时间属性

《Flink SQL 基础概念》系列,共包含以下 5 篇文章: Flink SQL 基础概念(一):SQL & Table 运行环境、基本概念及常用 APIFlink SQL 基础概念(二):数据类型Flink SQL 基础概念&am…...

文字弹性跳动CSS3代码

文字弹性跳动CSS3代码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面 下载地址 文字弹性跳动CSS3代码...

前端小白的学习之路(事件流)

提示:事件捕获,事件冒泡,事件委托 目录 事件模型(DOM事件流) 1.事件是什么 2.事件流 1).事件流的三个阶段 3.参考代码 二、事件委托 1.概念 2.使用案例 3.阻止冒泡行为 事件模型(DOM事件流) 1.事件是什么 1). 事件是HTML和Javascr…...

电脑文件误删除如何恢复?分享三个简单数据恢复方法

在日常使用电脑的过程中,文件误删除的情况时有发生。无论是由于操作失误还是病毒感染,丢失的文件都可能对我们的工作和学习造成极大的影响。因此,掌握文件恢复的方法显得尤为重要。下面围绕“电脑文件误删除如何恢复”这一主题,给…...

MySQL实战:监控

监控指标 性能类指标 名称说明QPS数据库每秒处理的请求数量TPS数据库每秒处理的事务数量并发数数据库实例当前并行处理的会话数量连接数连接到数据库会话的数量缓存命中率Innodb的缓存命中率 功能类指标 名称说明可用性数据库是否正常对外提供服务阻塞当前是否有阻塞的会话…...

MySQL自增主键自动生成的主键重置

需求描述: 从主键1开始,insert操作自增了五个,库里五条数主键是1、2、3、4、5; 然后把主键是3、4、5的三条数据给删了,再继续insert,主键就是6了 因为这里表会把最大的数即5记住,下次自增即为…...

reverse_iterator实现

对于实现reverse_iterator&#xff0c;我们可以学栈和队列的实现过程&#xff0c;利用适配器&#xff0c;实现如下; #pragma oncetemplate<class Iterator,class Ref,class Ptr> class reverse_Iterator { public://构造函数&#xff1a;reverse_Iterator(Iterator it):…...

C++:什么情况下函数应该声明为纯虚函数

在C中&#xff0c;函数应该在以下情况下声明为纯虚函数&#xff1a; 抽象基类&#xff1a;当你希望定义一个基类&#xff0c;该基类不能被实例化&#xff0c;只能作为其他类的基类时&#xff0c;你应该在基类中声明至少一个纯虚函数。这样的基类被称为抽象基类。纯虚函数通过在…...

【全面了解自然语言处理三大特征提取器】RNN(LSTM)、transformer(注意力机制)、CNN

目录 一 、RNN1.RNN单个cell的结构2.RNN工作原理3.RNN优缺点 二、LSTM1.LSTM单个cell的结构2. LSTM工作原理 三、transformer1 Encoder&#xff08;1&#xff09;position encoding&#xff08;2&#xff09;multi-head-attention&#xff08;3&#xff09;add&norm 残差链…...

区块链推广海外市场怎么做,CloudNEO服务商免费为您定制个性化营销方案

随着区块链技术的不断发展和应用场景的扩大&#xff0c;区块链项目希望能够进入海外市场并取得成功已成为越来越多公司的目标之一。然而&#xff0c;要在海外市场推广区块链项目&#xff0c;需要采取有效的营销策略和措施。作为您的区块链项目营销服务商&#xff0c;CloudNEO将…...

【S5PV210】 | ARM的指令集合

【S5PV210】 | ARM的指令集合 时间&#xff1a;2024年3月17日23:32:06 目录 文章目录 【S5PV210】 | ARM的指令集合目录 ARM指令集具有一系列显著的特点。首先&#xff0c;它属于RISC&#xff08;精简指令集计算机&#xff09;架构&#xff0c;这意味着译码机制相对简单。在AR…...

2024-3-17Go语言入门

在Go语言中&#xff1a; var a chan int 定义了一个名为 a 的变量&#xff0c;其类型为 chan int。这意味着 a 是一个整型值的通道&#xff08;channel&#xff09;。通道是Go语言中用于goroutine之间通信的一种机制&#xff0c;你可以通过通道发送和接收特定类型的值。在这个例…...

AJAX-XMLHttpRequest

XMLHttpRequest 定义&#xff1a; XMLHttpRequest对象用于与服务器交互。通过XMLHttpRequest可以在不断刷新页面的情况下请求特定URL&#xff0c;获取数据。这允许网页在不影响用户操作的情况下&#xff0c;更新页面的局部内容。 关系&#xff1a; axios内部采用XMLHttpReques…...

【GPT-SOVITS-04】SOVITS 模块-鉴别模型解析

说明&#xff1a;该系列文章从本人知乎账号迁入&#xff0c;主要原因是知乎图片附件过于模糊。 知乎专栏地址&#xff1a; 语音生成专栏 系列文章地址&#xff1a; 【GPT-SOVITS-01】源码梳理 【GPT-SOVITS-02】GPT模块解析 【GPT-SOVITS-03】SOVITS 模块-生成模型解析 【G…...

论文阅读_时序模型_iTransformer

1 2 3 4 5 6 7 8英文名称: ITRANSFORMER: INVERTED TRANSFORMERS ARE EFFECTIVE FOR TIME SERIES FORECASTING 中文名称: ITRANSFORMER&#xff1a;倒置Transformers在时间序列预测中的有效性 链接: https://openreview.net/forum?idX6ZmOsTYVs 代码: https://github.com/thum…...

Docker 哲学 - 容器操作 -cp

1、拷贝 容器绑定的 volume的 数据&#xff0c;到指定目录 2、匿名挂载 volume 只定义一个数据咋在容器内的path&#xff0c;docker自动生成一个 sha256 的key作为 volume 名字。这个 sha256 跟 commitID 一致都是唯一的所以 &#xff0c;docker利用这个机制&#xff0c;可以…...

作品展示ETL

1、ETL 作业定义、作业导入、控件拖拽、执行、监控、稽核、告警、报告导出、定时设定 欧洲某国电信系统数据割接作业定义中文页面&#xff08;作业顶层&#xff0c;可切英文&#xff0c;按F1弹当前页面帮助&#xff09; 涉及文件拆分、文件到mysql、库到库、数据清洗、数据转…...

终极指南:5分钟解决BepInEx插件框架的90%常见问题 [特殊字符]

终极指南&#xff1a;5分钟解决BepInEx插件框架的90%常见问题 &#x1f680; 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx是Unity游戏社区中最受欢迎的插件框架之一&…...

Fusion Pixel Font:开源多语言像素字体完全指南

Fusion Pixel Font&#xff1a;开源多语言像素字体完全指南 【免费下载链接】fusion-pixel-font 开源的泛中日韩像素字体&#xff0c;黑体风格 项目地址: https://gitcode.com/gh_mirrors/fu/fusion-pixel-font 寻找完美的像素字体为你的复古项目增添独特魅力&#xff1…...

C++上位机软件工程师面试记录

目录 &#xff08;一&#xff09; 1. Qt 常用多线程类有哪些&#xff1f; 2. Qt 多线程不重写 run() 如何使用&#xff1f; 3. TCP 粘包、半包问题如何处理&#xff1f; 4. TCP 与 UDP 有什么区别&#xff1f; 5. TCP 三次握手、四次挥手基本原理 6. Modbus RTU 和 Modbus TCP …...

26年5月系分论文~写作思路深度拆解

Hello 我是方才&#xff0c;15人研发leader、5年团队管理&架构经验。文末&#xff0c;附26年10月最新软考备考资料备考交流群&#xff0c;群友可享受每月直播哟&#xff01;2605系分论文分析今天系分和架构均已考完&#xff0c;方才先预祝所有考生均能逢考必过&#xff01;…...

告别手动拼图!用Unity TileMap的Fill Box和Picker工具,5分钟搞定复杂地形

告别手动拼图&#xff01;用Unity TileMap的Fill Box和Picker工具高效构建复杂地形在2D游戏开发中&#xff0c;地形设计往往是耗时又繁琐的环节。想象一下&#xff0c;你需要手动放置数百个草地、水域或砖块瓦片来构建游戏世界&#xff0c;这不仅容易出错&#xff0c;还会消耗大…...

小型本地LLM框架在教育领域的应用与实现

1. 小型本地LLM框架概述在教育领域&#xff0c;大型语言模型&#xff08;LLMs&#xff09;的应用日益广泛&#xff0c;但大多数解决方案依赖于云端部署的专有模型&#xff0c;这带来了成本、隐私和控制方面的挑战。我们开发了一个基于小型本地部署语言模型&#xff08;3B-7B参数…...

Keil MDK优化级别设置与嵌入式开发性能调优

1. UVISION项目优化级别设置全解析在嵌入式开发领域&#xff0c;代码优化是提升性能、减少体积的关键环节。Keil MDK作为ARM架构的主流开发环境&#xff0c;提供了从项目全局到单个函数的多层级优化控制能力。本文将深入剖析如何在Vision环境中精细控制优化级别&#xff0c;帮助…...

【程序源代码】答题微信小程序(含源码)

关键字&#xff1a;答题&#xff0c;小程序&#xff0c;OCR, 题目识别&#xff0c;题库&#xff0c;练习&#xff0c;错题集&#xff0c;微信小程序&#xff0c;Vue项目名称&#xff1a;答题微信小程序答题小程序是面向学生群体打造的轻量化在线答题学习平台&#xff0c;基于微…...

安全测试新手避坑指南:Windows下用X-ray进行被动扫描时,为什么我扫不到漏洞?

Windows下X-ray被动扫描零结果排查指南&#xff1a;从代理配置到日志分析全解析刚接触安全测试的新手在Windows上配置X-ray进行被动扫描时&#xff0c;常会遇到一个令人沮丧的问题——明明按照教程一步步操作&#xff0c;浏览器代理设置好了&#xff0c;X-ray也运行起来了&…...

阴阳师智能自动化脚本:5个步骤实现游戏任务全托管

阴阳师智能自动化脚本&#xff1a;5个步骤实现游戏任务全托管 【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript 还在为阴阳师中重复的日常任务感到厌倦吗&#xff1f;每天花费数小…...