Форум сайта python.su
0
Добрый день. Есть два скрипта:первый-сервер, второй- клиент.
Для проверки на отключение клиента сервер использует такой код
data = self.conn.recv(1024) if not data: break
s = socket.socket() s.connect((host, port)) try: while True: buf = input(">>") s.send(bytes(buf.encode('utf-8'))) #s.close() finally: s.close()
class client(threading.Thread): def __init__(self, sock): self.sock=sock threading.Thread.__init__(self) def run(self): try: while 1: data = self.sock.recv(1024) print (data.decode("utf-8")) finally: #sen.alive=False self.sock.close() return s = socket.socket() s.connect((host, port)) th=client(s) th.start()
Отредактировано jct (Фев. 23, 2014 06:47:08)
Офлайн
20
Вы показали мне не тот код, в этом коде нет проблем, не считая мелочей:
1. s.close – зачем их два?
2. s.recv – откуда s?
3. sen.alive – чаво это?
4. return – ну если вам так нравится
5. первый сервер и последний клиент никогда не придут к согласию
Сами то его смотрели после постинга? Или ладно, интернет всё стерпит.
Если вы публикуете код для примера, то не поленитесь и проверить его в интерпретаторе, точно ли в нём воспроизводится ошибка и вы не добавили десяток других? Так же не помешает, хотя бы в скользь, упомянуть версию интерпретатора.
..bw
Отредактировано bw (Фев. 22, 2014 22:58:00)
Офлайн
0
bwДа, случайно вышло
1. s.close – зачем их два?
bwДа, ошибка
2. s.recv – откуда s?
bwСлучайность
3. sen.alive – чаво это?
bw?
4. return – ну если вам так нравится
bw?
5. первый сервер и последний клиент никогда не придут к согласию
bw3.3
Так же не помешает, хотя бы в скользь, упомянуть версию интерпретатора…bw
Офлайн
0
up
Офлайн