UDP猜数字游戏与TCP文件传输案例解析

目录

案例一:UDP协议实现的猜数字游戏

游戏概述

服务器端代码 

客户端代码 (udp_client.py)

游戏特点

案例二:TCP协议实现的文件传输工具

工具概述

服务器端代码 

客户端代码

工具特点

总结对比


案例一:UDP协议实现的猜数字游戏

游戏概述

这是一个基于UDP协议的客户端-服务器猜数字游戏,服务器随机生成一个1-100的数字,客户端通过猜测数字与服务器交互,服务器会提示猜测是太大还是太小。

服务器端实现步骤

  1. 导入所需模块

    import socket
    import random
  2. 初始化游戏参数

    num_boom = random.randint(1, 100)  # 生成1-100的随机数
    current_min = 1  # 当前最小范围
    current_max = 100  # 当前最大范围
  3. 创建UDP套接字

    sk = socket.socket(type=socket.SOCK_DGRAM)  # 创建UDP socket
  4. 绑定IP和端口

    sk.bind(('0.0.0.0', 8080))  # 绑定到所有可用IP的8080端口
    print("游戏服务器已启动,等待玩家连接...")
  5. 主游戏循环

    while True:
        # 等待客户端消息
        msg_client, addr = sk.recvfrom(1024)  # 接收最多1024字节
        print(f"收到来自{addr}的消息")
        
        # 解析消息 (格式: "玩家名:猜测数字")
        try:
            name, guess_str = msg_client.decode("utf-8").split(":")
            guess = int(guess_str)
        except:
            sk.sendto("消息格式错误!请发送'名字:数字'".encode(), addr)
            continue
  6. 判断猜测结果

       # 判断猜测大小
        if guess < num_boom:
            current_min = guess + 1
            response = f"{name}猜了{guess},太小了!当前范围: {current_min}-{current_max}"
        elif guess > num_boom:
            current_max = guess - 1
            response = f"{name}猜了{guess},太大了!当前范围: {current_min}-{current_max}"
        else:
            response = f"恭喜{name}!猜对了!数字是{num_boom}!"
            sk.sendto(response.encode(), addr)
            break
        
        # 发送响应
        sk.sendto(response
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值