#usr/bin/python #-*-coding:utf-8-*- """服务器端"""" import socket # 创建服务端 server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 绑定IP和端口 server.bind(("192.168.0.159",8888)) # 等待通讯 server.listen(5) print("服务端已经启动,等待客户端连接.....") # 接受通讯 connect1,address1 = server.accept() while True: # 收到的信息 msg = connect1.recv(1024) print("收到客户端发来的信息:{}".format(msg.decode("utf-8"))) # 发送信息给客户端 connect1.sendall(input('服务器:').encode("utf-8")) # 通讯完毕,关闭连接 connect1.close() # 关闭服务端 server.close()
""" 客户端""" import socket # 创建客户端 client1 = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 连接服务器 client1.connect(("192.168.0.159",8888)) print("客户端连接成功,请开始通讯,输入 n 结束通讯:") while True: msg = input('客户端:') if msg == "n": break else: # 发送信息 client1.send(msg.encode("utf-8")) # 接受服务器发送的信息 msg = client1.recv(1024) print("服务端回复:{}".format(msg.decode("utf-8"))) # 通讯完毕,关闭连接 client1.close()
"""群聊服务器""" import socket,threading server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) server.bind(("192.168.0.159",8888)) server.listen(5) print("服务端已经启动,等待客户端链接...") message = '' lock = threading.Lock() cond = threading.Condition(lock=lock) def get_msg(conn,addr): while True: msg = conn.recv(1024) global message cond.acquire() message = str(addr) + ">>>:" + msg.decode() print("收到的信息:{}".format(message)) cond.notifyAll() cond.release() def send_msg(conn,addr): while True: # 不加锁则一直发送 cond.acquire() cond.wait() cond.release() conn.sendall(message.encode('utf-8')) print('\t发送信息:{}'.format(message)) while True: conn, addr = server.accept() threading._start_new_thread(get_msg,(conn,addr)) threading._start_new_thread(send_msg,(conn,addr))
"""群聊客户端""" import socket,threading client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) client.connect(("192.168.0.159",8888)) def get_msg(): while True: msg1 = client.recv(1024) print("\t收到信息:{}".format(msg1.decode())) threading._start_new_thread(get_msg,()) while True: msg2 = input("请输入信息:") client.send(msg2.encode("utf-8"))