как исправить отправку строки с python-сокетом после отправки файла - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь создать сервер и клиент, который отправляет файл с клиента на сервер, и сервер сохраняет его на жесткий диск, тогда сервер запрашивает другой файл, и если ответ клиента - да, тогда клиент отправляет второй файл, а затем сервер снова сохраняет его, и если клиентский ответ отсутствует, сервер закрывает сокет, когда я запускаю этот код, первый файл отправляется и получил успешно, но после этого сервер и клиент зависли и ничего не происходит, что с ним не так и как я могу это исправить?

код моего сервера:

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 голосов
/ 12 апреля 2019

Почему вы проверяли a == "yes" на стороне клиента, даже если сервер не отправляет "да"

Я думаю, вы можете проверить a == "is there any other file?" insted

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...