Python 如何在文本文件中一个接一个地发送字符串,并延迟一秒?

Python 如何在文本文件中一个接一个地发送字符串,并延迟一秒?,python,string,file,sockets,Python,String,File,Sockets,我得到了一个客户端-服务器连接,它对文本文件中的字符串进行加密。客户端打开.txt文件,加密这些字符串并将其发送到服务器。我在.txt文件中得到了3个字符串,希望将加密的字符串逐个发送到服务器 所以它应该是这样的:客户端发送X字符串,在发送Y字符串之前等待1秒,同时,服务器将解密后的字符串返回给客户端。 这就是我通过套接字发送数据的方法 infle=opentextinput.txt,rb content=infle.read 结束 enc_data=publickey.encryptconte

我得到了一个客户端-服务器连接,它对文本文件中的字符串进行加密。客户端打开.txt文件,加密这些字符串并将其发送到服务器。我在.txt文件中得到了3个字符串,希望将加密的字符串逐个发送到服务器

所以它应该是这样的:客户端发送X字符串,在发送Y字符串之前等待1秒,同时,服务器将解密后的字符串返回给客户端。 这就是我通过套接字发送数据的方法

infle=opentextinput.txt,rb content=infle.read 结束 enc_data=publickey.encryptcontent,16 ipaddr=127.0.0.1 端口号=11200 connectie=socket.socketsocket.AF_INET,socket.SOCK_流 康涅狄格州康涅狄格州 connectie.sendenc_数据[0]发送加密数据 content包含3个字符串,enc_数据包含3个字符串,但已加密。我使用connectie.send将enc_数据发送到服务器


我如何能够以1秒的延迟单独发送这些字符串?

演示了使用简单加密库的简化自定义加密/解密方法:

示例input.txt内容:

first line
second line
last line
server.py:

client.py:

套接字服务器进程运行和输出:

[roman@roman-pc data]$ python3 server.py
Got connection from ('127.0.0.1', 40736)
Received data from client b"sc\x00\x02p\x02\x98\xd4@\x9e\xeaeb@u\xc5\xbc\x0b\xbea\xcf\xca~\x87\xb1\x01(\x9d\xd2\x05\x0b8\xa8\x85\x94\xc4\xc5\xe2W\x8d\xe5P\xec\x83D\xeb\xe8\xcbV\x1ai3\xf5\x13s\x82\xbe7\xc9\xa8\xad'e\xbeq&Q_\x0f\t~V\x13\xe9\xde\xf1\xba~"
Received data from client b'sc\x00\x02Sa\xe9\x97,\xf7\x99\x7f<\xd2n\xbfc\x98g~t\xa3\xf9\x98\xc9\xf9\xff>\x99\x9aI{sAMY"\x9bX\x19\xfe\xe3i\xad=\xfa\rs\x9b,\xaadN\xb9_Bc\xe2\xf75\xdfP/wx\x1a\x91\xa27VZ[M\xa3\x0f3\xc9vL'
Received data from client b'sc\x00\x02U\xb8\xbc|\xbb\xbe\x95\xd5\\}0}\x8a\x10^]\xa0\xc9S\x08a\x99\x8e\xdd7[\xa4q\xec|\xe3\xe1\xf9|\xca?\x07\x18\xbc\xb4^*`\x7f\x07)\x1b\x10&\xda\xfdl!O\xa5K\xbe.\xd4\xbe\xb0\x960\x81\x83\xcb\x07\xb0=\x95\x8f\xd5\xb5'

您是否在同一文件/模块中定义了服务器和客户端套接字?@RomanPerekhrest您的确切意思是什么?我有两个文件,client.py和server.py。非常感谢你的精彩回答。这正好回答了我的问题。但是,这是我在客户端接收解密字符串的格式。Ontvangen Gedecrypt hoofdletters中的字符串:GEHEIME BERICHT 1项目PADWACHTWOORDEN这是我打印的方式:打印\n Ontvangen Gedecrypt hoofdletters中的字符串:\n+StrderCrypt_数据。解码“utf-8”我将如何修复此问题。它应该类似于GEHEIME BERICHT 1\n项目垫\nWACHTWOORDEN@fire2247z,\n是一个换行符,它会将旁边的文本移到下一行。要保留这些符号,您需要1使用额外的反斜杠GEHEIME BERICHT 1\\n项目PAD\nWatchTwoOrden转义这些符号,或2 wrap into repr函数:print\n Vangen Ge解密hoofdletters中的字符串:\n+reprdecrypt_data。解码“utf-8”我想我说错了,我希望客户端输出与您的一样。GEHEIME BERICHT 1号线应位于1号线,项目地块位于2号线等。。我试着用脱衣舞和你的方法。似乎什么也解决不了。@fire2247z,我已经发布了一个有效的方法/解决方案。另外,您所问的问题与您的自定义数据表示的具体情况有关-这是您可以创建自定义数据的另一个问题。非常感谢您的帮助。你能解释一下康恩是怎么回事吗?
import socket
from simplecrypt import encrypt, decrypt
import time

HOST = '127.0.0.1'
POST = 11200

pwd = 'secret' # for demo only

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
    sock.connect((HOST, POST))
    with open('input.txt', 'rb') as f:
        for line in f:
            sock.send(encrypt(pwd, line.strip()))
            time.sleep(1)   # the needed delay
            data = sock.recv(1024).decode('utf8')
            print(f'Received data from server "{data}"')
[roman@roman-pc data]$ python3 server.py
Got connection from ('127.0.0.1', 40736)
Received data from client b"sc\x00\x02p\x02\x98\xd4@\x9e\xeaeb@u\xc5\xbc\x0b\xbea\xcf\xca~\x87\xb1\x01(\x9d\xd2\x05\x0b8\xa8\x85\x94\xc4\xc5\xe2W\x8d\xe5P\xec\x83D\xeb\xe8\xcbV\x1ai3\xf5\x13s\x82\xbe7\xc9\xa8\xad'e\xbeq&Q_\x0f\t~V\x13\xe9\xde\xf1\xba~"
Received data from client b'sc\x00\x02Sa\xe9\x97,\xf7\x99\x7f<\xd2n\xbfc\x98g~t\xa3\xf9\x98\xc9\xf9\xff>\x99\x9aI{sAMY"\x9bX\x19\xfe\xe3i\xad=\xfa\rs\x9b,\xaadN\xb9_Bc\xe2\xf75\xdfP/wx\x1a\x91\xa27VZ[M\xa3\x0f3\xc9vL'
Received data from client b'sc\x00\x02U\xb8\xbc|\xbb\xbe\x95\xd5\\}0}\x8a\x10^]\xa0\xc9S\x08a\x99\x8e\xdd7[\xa4q\xec|\xe3\xe1\xf9|\xca?\x07\x18\xbc\xb4^*`\x7f\x07)\x1b\x10&\xda\xfdl!O\xa5K\xbe.\xd4\xbe\xb0\x960\x81\x83\xcb\x07\xb0=\x95\x8f\xd5\xb5'
[roman@roman-pc data]$ python3 client.py
Received data from server "first line"
Received data from server "second line"
Received data from server "last line"