You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现客户端间隔1秒逐个发送加密文本字符串至服务器?

实现逐个加密发送字符串并间隔1秒的方案

我来帮你调整代码实现这个需求~咱们需要针对几个核心点做修改,把一次性读取发送改成逐个处理,同时加入延迟和服务器返回的接收逻辑:

修改后的完整代码

import socket
import time  # 导入time模块实现1秒间隔

# 假设你的publickey已经提前完成初始化(比如通过RSA密钥生成)
# publickey = RSA.importKey(...)

# 1. 读取文件并拆分出单个字符串(假设每个字符串单独占一行,可按需调整拆分逻辑)
with open("textinput.txt", "r", encoding="utf-8") as inFile:
    # 过滤空行并去掉换行符,得到3个字符串的列表
    strings_list = [line.strip() for line in inFile if line.strip()]

ipaddr = "127.0.0.1"
portnr = 11200

# 建立Socket连接
connectie = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connectie.connect((ipaddr, portnr))

try:
    for idx, raw_str in enumerate(strings_list):
        # 2. 对单个字符串单独加密(先转成字节流,符合RSA加密要求)
        str_bytes = raw_str.encode("utf-8")
        enc_data = publickey.encrypt(str_bytes, 16)
        
        # 3. 发送当前加密后的字符串
        connectie.send(enc_data[0])
        print(f"已发送第{idx+1}个加密字符串")
        
        # 4. 接收服务器返回的解密结果
        # 注意:bufsize可根据实际字符串长度调整,这里用1024作为示例
        decrypted_str = connectie.recv(1024).decode("utf-8")
        print(f"服务器返回解密内容:{decrypted_str}")
        
        # 5. 最后一个字符串发送后无需等待,其余发送完成后等待1秒
        if idx != len(strings_list) - 1:
            time.sleep(1)
finally:
    # 无论是否出错,最后都关闭连接
    connectie.close()

关键细节说明

  • 字符串拆分逻辑:我默认文件里每个字符串单独占一行,如果你的文件用逗号/空格等其他分隔符,把读取逻辑改成strings_list = inFile.read().split("你的分隔符")即可,记得过滤掉空字符串。
  • 加密与发送:每个字符串单独转字节、单独加密,确保发送的是单个字符串的加密结果,而非整体内容。
  • 接收服务器返回:每次发送后立刻接收服务器的解密响应,保证通信流程的同步性。
  • 延迟控制:用time.sleep(1)实现1秒间隔,且最后一个字符串发送后不再等待,避免多余的延迟。

内容的提问来源于stack exchange,提问作者N3ur0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:38:38