知识点

发送数据

  • 设计思路:

    image-20200701200504436

  • 代码展示:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    import socket


    def send_message():
    # 创建监听的套接字
    tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 链接服务器
    server_addr = ('192.168.85.129', 8080)
    tcp_socket.connect(server_addr)
    # 发送信息给服务器
    message = 'Test message'
    tcp_socket.send(message.encode('utf-8'))
    # 接受对方发送过来的数据,最大接受1024个字节
    recv_message = tcp_socket.recv(1024)
    print(recv_message.decode('utf-8'))
    # 关闭套接字
    tcp_socket.close()

    if __name__ == '__main__':
    send_message()

接受数据

  • 设计思路:

    image-20200701201336242

  • 参考代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    import socket


    def server():
    # 创建套接字
    server_tcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 绑定IP和端口
    server_tcp_client.bind(('', 8080))
    # 激活套接字的监听服务
    server_tcp_client.listen(128)
    while True:
    # 监听tcp客户端的链接,监听到的时候,此时会返回一个新的套接字对象、客户端IP和端口
    new_tcp_socket, client_addr = server_tcp_client.accept()
    print(str(new_tcp_socket) + '\n' + str(client_addr))
    # 接受客户端发送来的请求,接受到的是发送的文本信息
    while True:
    # 此处Recv
    message = new_tcp_socket.recv(1024)
    if message:
    print(message.decode('utf-8'))
    else:
    break
    # 关闭新的客户端的服务
    new_tcp_socket.close()

    # 关闭监听的套接字服务
    server_tcp_client.close()


    if __name__ == '__main__':
    server()

作业

  1. 编写TCP下载文件客户端
    1. 编写TCP文件下载服务端