当前位置: 首页 > article >正文

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

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

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


http://www.kler.cn/a/530145.html

相关文章:

  • MySQL 存储函数:数据库的自定义函数
  • 【AI论文】Sigma:对查询、键和值进行差分缩放,以实现高效语言模型
  • Python 梯度下降法(七):Summary
  • MediaPipe与YOLO已训练模型实现可视化人脸和手势关键点检测
  • 论文阅读(十六):利用线性链条件随机场模型检测阵列比较基因组杂交数据的拷贝数变异
  • 如何利用天赋实现最大化的价值输出-补
  • LeetCode:300.最长递增子序列
  • 【Rust自学】19.3. 高级函数和闭包
  • 【TCP协议】流量控制 滑动窗口 拥塞控制
  • 第二篇:多模态技术突破——DeepSeek如何重构AI的感知与认知边界
  • Spring应用场景 特性
  • 【C语言】自定义类型讲解
  • mysql字段名批量大小写转换
  • HarmonyOS NEXT:保存应用数据
  • 消息队列应用示例MessageQueues-STM32CubeMX-FreeRTOS《嵌入式系统设计》P343-P347
  • vector容器(详解)
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.3 结构化索引:记录数组与字段访问
  • ExternalName Service 针对的是k8s集群外部有api服务的场景?
  • Haskell语言的多线程编程
  • [权限提升] Windows 提权 维持 — 系统错误配置提权 - Trusted Service Paths 提权
  • IM 即时通讯系统-43-简单的仿QQ聊天安卓APP
  • 2024 年 6 月大学英语四级考试真题(第 3 套)——纯享题目版
  • linux本地部署deepseek-R1模型
  • 内部知识库助力组织智力激发与信息共享实现业绩增长
  • 《手札·开源篇》从开源到商业化:中小企业的低成本数字化转型路径 ——以Odoo为数据中台低成本实现售前售中一体化
  • [Java]异常