#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"))