python网络聊天程序设计
时间: 2023-10-12 08:18:35 浏览: 73
以下是一个简单的 Python 网络聊天程序设计:
1. 服务器端:
```
import socket
# 创建一个服务器 socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定服务器 IP 和端口号
server_socket.bind(('127.0.0.1', 5000))
# 开始监听客户端连接
server_socket.listen()
print('Server started.')
# 用于存储所有客户端 socket
clients = []
while True:
# 等待客户端连接
client_socket, address = server_socket.accept()
print(f'New connection from {address}')
# 将客户端 socket 存储到列表中
clients.append(client_socket)
# 启动一个新线程,用于接收客户端消息
def receive_message(client_socket):
while True:
try:
# 接收客户端消息
message = client_socket.recv(1024).decode()
# 将消息转发给所有客户端
for c in clients:
if c != client_socket:
c.send(message.encode())
except:
# 发生异常时,移除客户端 socket
clients.remove(client_socket)
print(f'{address} disconnected.')
break
# 启动线程
thread = threading.Thread(target=receive_message, args=(client_socket,))
thread.start()
```
2. 客户端:
```
import socket
import threading
# 创建一个客户端 socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
client_socket.connect(('127.0.0.1', 5000))
# 接收服务器发送的欢迎消息
welcome_message = client_socket.recv(1024).decode()
print(welcome_message)
# 输入昵称
nickname = input('Enter your nickname: ')
# 启动一个新线程,用于接收服务器和其他客户端发送的消息
def receive_message():
while True:
try:
# 接收消息
message = client_socket.recv(1024).decode()
# 显示消息
print(message)
except:
# 发生异常时,退出程序
client_socket.close()
break
# 启动线程
thread = threading.Thread(target=receive_message)
thread.start()
# 发送消息
while True:
message = input('')
client_socket.send(f'{nickname}: {message}'.encode())
```