# class A(object):
# pass
#
# class B(A):
# pass
#
# class C(B):
# pass
#
# class D(object):
# pass
#
# class E(D,C):
# pass
#
# class F(object):
# pass
#
# class G(F):
# pass
#
# class H(C,G):
# pass
#
# class Foo(E,H):
# pass
# print(E.mro())
'''
L(Foo + L(E) + L(H))
L(E) = E,D,C,B,A
L(H) = H,C,B,A,G,F
Foo = Foo +L(E) + L(F)
= E,D,C,B,A + H,C,B,A,G,F
= E,D,H,C,B,A,G,F
'''
import socket #插座,插排,穴
#创建服务端socket对象
server = socket.socket()
#绑定ip和端口
server.bind(('192.168.13.190',9999))#bind订装,捆绑,约束
#响应五个人
server.listen(8)
print("服务器端口准备开始接受客户端的链接")
#等带客户端来链接,如果没人来就傻傻的等待.
#conn 是哭护短和服务器连接的桥梁,服务端以后要通过该对象进行收发数据
#addr数客户端的地址信息
#阻塞,只有有客户端进行链接 ,则获取客户端链接然后开始进行通信,
conn, addr = server.accept()
print("已经有人连接上了客户端的信息:", conn, addr)
#通过对象去获取(客户端通过桥梁发过来的信息)
#1024*2 表示:服务端通过桥梁获取数据时,一次性最多拿1024个字节.
data = conn.recv(2048)
print("已经光明正大的发来消息了", data.decode("utf-8"))
#服务端通过桥梁给客户端回复了一个消息.
conn.send("what you what男".encode("utf-8"))
#与客户端断开链接(桥梁崩塌瓦解)
conn.close()
#关闭服务端的服务
server.close()
import socket
client = socket.socket()
#向客户端发起链接请求(桥梁)
# 阻塞, 去连接, 直到连接成功后才会继续走下去
client.connect(('192.168.13.190', 9999))#俩个值,ip地址 和端口号,放在一个元祖中
#链接上服务器后,向服务端发送消息
client.send('hello,男'.encode("utf-8"))
#客户端等待服务端将信息发送回来
data = client.recv(2048)
print(data.decode("utf-8"))
#关闭客户端
client.close()