小尹学python

导航

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()

posted on 2021-11-14 22:17  小尹学python  阅读(131)  评论(0编辑  收藏  举报