2025年2月2日(网络编程 tcp)

发布于:2025-02-10 ⋅ 阅读:(96) ⋅ 点赞:(0)

tcp 循环服务

import socket


def main():
    # 创建 socket
    # 绑定
    tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    tcp_server.bind(("", 8080))

    # socket 转变为被动
    tcp_server.listen(128)

    while True:
        # 产生专门为链接进来的客户端服务的 socket
        print("堵塞-1")
        server_client, client_addr = tcp_server.accept()

        # 接收数据(来自客户端)
        print(client_addr)
        while True:
            recv_msg = server_client.recv(1024)
            if recv_msg:
                print(recv_msg.decode("utf-8"))
            else:
                print("用户下线")
                break

            # 发送数据(发送到客户端)
            server_client.send("谢谢".encode("utf-8"))

        # 关闭套接字
        server_client.close()
        print("服务完毕")

    tcp_server.close()


if __name__ == "__main__":
    main()

在这里插入图片描述

下载器

import socket


def main():
    # 创建 socket
    tcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    tcp_client.bind(("", 8081))

    # 链接服务器
    tcp_client.connect(("192.168.0.178", 8080))

    # 发送数据
    send_data = input("请输入下载名称:")
    tcp_client.send(send_data.encode("utf-8"))

    # 接收数据
    recv_msg = tcp_client.recv(1024)  # 1024 bytes 1 kB
    print(recv_msg)

    # 保存数据
    # 存在再创建
    if recv_msg:  # 服务器关闭解堵塞
        with open("[测试]" + send_data, "wb") as f:
            f.write(recv_msg)

    # 关闭套接字
    tcp_client.close()


if __name__ == "__main__":
    main()
import socket


def main():
    # 创建 socket
    # 绑定
    tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    tcp_server.bind(("192.168.0.178", 8080))

    # socket 转变为被动
    tcp_server.listen(128)

    # 产生专门为链接进来的客户端服务的 socket
    print("堵塞-1")
    server_client, client_addr = tcp_server.accept()

    # 接收数据(来自客户端)
    print(client_addr)
    recv_msg = server_client.recv(1024)
    print(recv_msg.decode("utf-8"))

    # 发送数据(发送到客户端)
    file_name = recv_msg.decode("utf-8")

    file_content = None

    try:
        f = open(file_name, "rb")
        file_content = f.read()
        f.close()
    except Exception:
        print("没有要下载的文件")

    if file_content:
        server_client.send(file_content)

    # 关闭套接字
    server_client.close()
    tcp_server.close()


if __name__ == "__main__":
    main()

在这里插入图片描述
在这里插入图片描述