发送文件后如何修复使用python套接字发送字符串

时间:2019-04-12 19:27:05

标签: python sockets

我正在尝试创建一个服务器和一个客户端,该客户端和服务器将文件从客户端发送到服务器,然后服务器将其保存到硬盘,然后服务器请求另一个文件,如果客户端的回答是“是”,则客户端发送第二个文件,然后服务器再次保存它,如果客户端的回答是没有服务器,当我运行此代码时,关闭套接字,则发送第一个文件 并成功接收,但是在那之后服务器和客户端都冻结了,没有任何反应,这是什么问题,我该如何解决?

我的服务器代码:

import socket

host = 'localhost'

port = 4444

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.bind((host, port))

s.listen(5) 

(client, (ip, port))=s.accept()


while True:

    data = "".join(iter(lambda: client.recv(1), "\n"))

with open('filehere.txt', 'w') as file:



    for item in data:

        file.write("%s" % item)

    if not data: break


client.send("is there any other file?")

d = client.recv(2048)

if d == "yes":

    while True:

        data = "".join(iter(lambda: client.recv(1), "\n")

        with open('filehere1.txt', 'w') as file:

             for item in data:

                 file.write("%s" % item)

        if not data: break

        s.close()

else:

    s.close()

我的客户代码:

import socket

host = 'locahost'

port = 4444

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect((host, port))


f = open('myfile.txt', 'rb')

l = f.read()

while True:

    for line in l:

        s.send(line)

    break

f.close()

d = s.recv(2048)

a = raw_input(d)


if a == "yes":

    s.send("yes")

    f = open('myfile1', 'rb')

    l = f.read()

    while True:

        for line in l:

            s.send(line)
        break

    f.close()

else:

    s.close

1 个答案:

答案 0 :(得分:0)

即使服务器未发送“是”,为什么还要在客户端检查.tf_configure.bazelrc

我认为您可以检查已安装的a == "yes"