Python:网络编程案例之收发信息
服务端
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('127.0.0.1', 8001)) # IP,端口 127.0.0.1是本机地址
sock.listen(5) # 支持排队等待的是5人
while True:
conn, addr = sock.accept() # 等待客户端来连接,如果没有客户端来连接,则一直卡在这里
# conn是连接管道,addr是发起连接的客户端地址
print('收到客户连接……')
conn.sendall('欢迎来到本系统!'.encode('utf-8'))
while True:
client_data = conn.recv(1024) # 等待客户端发来数据
if not client_data:
break
data = client_data.decode('utf-8')
print('客户问:', data)
# 给连接者回复消息
conn.sendall('做啥子哎'.encode('utf-8'))
print('关闭连接')
conn.close() # 关闭双方连接
sock.close() # 服务端中止后续连接
客户端
import socket
client = socket.socket()
client.connect(('127.0.0.1', 8001)) # 向服务端发起连接
# 连接成功发消息
client.sendall('hello'.encode('utf-8'))
# 等待服务端回消息
reply = client.recv(1024)
print(reply)
while True:
data = input('请输入您的问题:')
if data.upper() == 'Q':
break
client.sendall(data.encode('utf-8'))
data2 = client.recv(1024)
print(data2.decode('utf-8'))
# 关闭连接
client.close()