python实现在线聊天
时间: 2023-07-13 09:17:43 浏览: 41
要实现 Python 的在线聊天功能,可以使用 Socket 编程实现。下面是一个简单的示例代码,可以实现两个客户端之间的在线聊天:
1. 服务端代码:
```python
import socket
# 创建 socket 对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取本地主机名和端口号
host = socket.gethostname()
port = 12345
# 绑定端口号
server_socket.bind((host, port))
# 设置最大连接数,超过后排队
server_socket.listen(5)
while True:
# 等待客户端连接
client_socket, addr = server_socket.accept()
print(f"连接地址: {addr}")
# 向客户端发送欢迎消息
message = "欢迎访问服务器!"
client_socket.send(message.encode())
while True:
# 接收客户端发送的消息
data = client_socket.recv(1024)
# 如果客户端发送了空消息,说明客户端已经关闭连接
if not data:
break
# 输出客户端发送的消息
print(f"客户端 {addr} 发送的消息:{data.decode()}")
# 向客户端发送回复消息
reply = f"你发送了:{data.decode()}"
client_socket.send(reply.encode())
# 关闭连接
client_socket.close()
```
2. 客户端代码:
```python
import socket
# 创建 socket 对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取本地主机名和端口号
host = socket.gethostname()
port = 12345
# 连接服务端
client_socket.connect((host, port))
# 接收欢迎消息
message = client_socket.recv(1024)
print(message.decode())
while True:
# 发送消息到服务端
data = input("请输入消息:")
client_socket.send(data.encode())
# 接收服务端的回复消息
reply = client_socket.recv(1024)
print(f"服务端回复:{reply.decode()}")
# 如果客户端输入了 "quit",则关闭连接并退出程序
if data == "quit":
break
# 关闭连接
client_socket.close()
```
在客户端连接到服务端后,客户端可以输入任意字符串作为消息,服务端会将这条消息返回给客户端。如果客户端输入了 "quit",则会关闭连接并退出程序。