ChatGPT编程实现简易聊天工具
今天借助[[小蜜蜂]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:
break
print(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 = 12345
try:
# 连接服务,指定服务器的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聊天。
分别在服务器端(服务器端代码)和客户端(客户端代码)运行聊天程序。运行结果截图如下: