网络编程(2)socket

Python中内置了一个socket模块,可以快速实现网络之间进行传输数据。例如:

  • 服务端,放在左边云服务器中(有固定IP)

    import socket
    
    # 1.监听本机的IP和端口
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.bind(('127.0.0.1', 8001)) # IP,端口
    # 这里是一个元组
    sock.listen(5) # 支持排队等待5人
    
    while True:
        # 2.等待,有人来连接(阻塞)
        conn, addr = sock.accept() # 等待客户端来连接(阻塞)
    
        # 3.等待,连接者发送消息(阻塞)
        client_data = conn.recv(1024) # 等待接收客户端发来数据
        print(client_data.decode('utf-8')) # 字节
    
        # 4.给连接者回复消息
        conn.sendall("hello world".encode('utf-8'))
    
        # 5.关闭连接
        conn.close()
    
    # 6.停止服务端程序
    sock.close()
    
  • 客户端,放在右边用户电脑上

    import socket
    
    # 1. 向指定IP发送连接请求
    client = socket.socket()
    client.connect(('127.0.0.1', 8001)) # 向服务端发起连接(阻塞)10s
    
    # 2. 连接成功之后,发送消息
    client.sendall('hello'.encode('utf-8'))
    
    # 3. 等待,消息的回复(阻塞)
    reply = client.recv(1024)
    print(reply)
    
    # 4. 关闭连接
    client.close()
    
服务端的代码需修改:监听的IP修改为A的IP地址。
客户端的代码需修改:连接的IP修改为A的IP地址(客户端要去找到服务端,并与服务端创建连接)。

案例:文件上传

posted @ 2021-11-20 13:07  下个ID见  阅读(12)  评论(0)    收藏  举报