socket聊天室建立群组,客户端能够向组内成员发送消息,未在组内不能收到 代码
时间: 2024-01-01 21:05:54 浏览: 58
这是一个基于 Python 的简单的 socket 聊天室建立群组的示例代码:
Server 端:
```python
import socket
import threading
# 定义群组名称和群组成员列表
group_name = "Awesome Group"
group_members = []
# 启动服务端
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('localhost', 5555))
server.listen()
# 处理客户端连接请求
def handle_client(conn, addr):
# 客户端连接成功,欢迎信息
conn.send(f"Welcome to {group_name}! You are now connected.\n".encode())
# 加入群组
group_members.append(conn)
# 循环处理客户端消息
while True:
try:
# 接收客户端消息
message = conn.recv(1024).decode()
# 如果收到“quit”消息,退出并关闭连接
if message == "quit":
conn.send("You are now disconnected.\n".encode())
conn.close()
group_members.remove(conn)
break
# 向群组内所有成员发送消息
for member in group_members:
if member != conn:
member.send(f"{addr[0]}: {message}".encode())
except:
conn.close()
group_members.remove(conn)
break
# 循环处理客户端连接请求
while True:
conn, addr = server.accept()
thread = threading.Thread(target=handle_client, args=(conn, addr))
thread.start()
```
Client 端:
```python
import socket
import threading
# 定义客户端名称
client_name = input("Enter your name: ")
# 连接服务端
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('localhost', 5555))
# 接收服务端欢迎信息
print(client.recv(1024).decode())
# 循环处理客户端消息
def handle_messages():
while True:
message = client.recv(1024).decode()
print(message)
# 启动消息处理线程
thread = threading.Thread(target=handle_messages)
thread.start()
# 循环发送消息
while True:
message = input()
client.send(message.encode())
# 如果发送“quit”消息,退出并关闭连接
if message == "quit":
client.close()
break
```
该示例代码仅供参考,实际应用中可能需要进行更多的安全性和错误处理。
阅读全文