群聊客户端
import socket,threading
# 创建个服务端
server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 绑定服务器的IP和端口server.bind((
'192.168.0.1',
8000))
# 设置最大挂起连接数5
server.listen(
5)
print(
'服务端 启动等待客户端连接...')
# 创建一个中间转换数据的变量
message=
""
# 创建一把锁
lock=threading.Lock()
Cond=threading.Condition(
lock=lock)
# 不停的收 不停的发
def recv_msg(conn,address):
while True:
global message
msg=conn.recv(
1024)
Cond.acquire()
message=
str(address)+
'>>'+msg.decode()
print(
'收到:'+message)
Cond.notify_all()
#唤醒其他给我发消息的线程
Cond.release()
def send_msg(conn,
address):
while True:
Cond.acquire()
Cond.wait()
Cond.release()
conn.sendall(message.encode(
'utf-8'))
print(
'发送'+message)
#
为每一个连接者提供收与发的线程
不停的收 不停的发
while True:
conn,address=server.accept()
threading._start_new_thread(recv_msg,(conn,address))
threading._start_new_thread(send_msg,(conn,address))
import socket,threading # 1.创建个客户端 client=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 2.建立连接 client.connect('192.168.0.1',8888) # 收取其他用户的数据 def recv_msg(): while True: msg=client.recv(1024) print('收到',msg.decode()) threading._start_new_thread(recv_msg,()) # 不停的发 while True: msg=input('请输入数据消息:') client.send(msg.encode('utf-8'))