# 封装过
import socket
from threading import Thread
# 套字节 TCP协议
server = socket.socket()
# 绑定ip与port
server.bind(('127.0.0.1', 8080))
# 连接池 子线程 客户端连接 不受连接池限制所影响!
server.listen(5)
# 执行程序
def talk(sock):
# 循环接收客户端数据
while True:
# 异常捕获
try:
# 固定每次接收数据,
data = sock.recv(1024)
# 判断接收是否为空
if len(data) == 0: break
# 将接收数据解码
print(data.decode('utf8'))
# 发送数据
sock.send(data + b'gun dan!')
except ConnectionResetError as e:
print(e)
break
# 结束套字节
sock.close()
# 调用执行程序
while True:
# 循环 被动客户端连接 并返回(sock,addr)sock是通信,发送数据与接收数据
# addr是客户端地址
sock, addr = server.accept()
print(addr)
# 开设多进程或者多线程
t = Thread(target=talk, args=(sock,))
# 执行打开子线程
t.start()
import socket
# 客户端 套字节
client = socket.socket()
# 连接服务端ip与port
client.connect(('127.0.0.1', 8080))
while True:
# 获取用户输入
msg = input('>>>')
# 发送数据 并编码
client.send(msg.encode('utf8'))
# 接收服务端数据
data = client.recv(1024)
# 解码并打印
print(data.decode('utf8'))