server.py
import socket,threading
def tcplink(sock, addr):
print('Accept new connection from %s:%s...' % addr)
# 发送信息给服务器
sock.send('WELCOME'.encode())
while True:
# 接受从服务器传来的信息
data = sock.recv(1024).decode()
if not data or data == 'exit':
break
# 发送信息给服务器
sock.send(('Hello, %s!' % data).encode())
sock.close()
print('Connection from %s:%s closed.' % addr)
# 创建一个 socket 对象,用于 listen 和 accept 。
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定主机和端口
s.bind(('127.0.0.1',5001))
# listen(n) 中 n 表示的是服务器拒绝(超过限制数量的)连接之前,操作系统可以挂起的最大连接数量。n 也可以看作是"排队的数量"
s.listen(5)
print("waiting for connection...")
while True:
# 获取访问的客户端 socket 和 addr
sock, addr = s.accept()
# 开启一个线程去处理与该客户端的交互
t = threading.Thread(target = tcplink, args = (sock, addr))
t.start()
t.join()
print("server end.")
复制代码
client.py
import socket
# 创建一个 socket 对象
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 连接服务器
s.connect(('127.0.0.1',5001))
# 打印从服务器接收到的信息
print(s.recv(1024).decode())
for data in ['wangda','wanger','wangsan']:
# 给服务器发信息
s.send(data.encode())
print(s.recv(1024).decode())
s.send('exit'.encode())
s.close()
复制代码
开两个终端,分别用 python 命令启动两个脚本,即可看到效果。