赞
踩
今天借助[[小蜜蜂]][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: 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聊天。
分别在服务器端(服务器端代码)和客户端(客户端代码)运行聊天程序。运行结果截图如下:
以上示例在[小蜜蜂AI网站][https://zglg.work]完成,欢迎注册体验。
无所不能的AI时代必将成为广大程序员的最有力的助手!快快去体验吧。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。