Как прервать socket.recv () в python?

Чтобы сериализовать объект, выполните:

 using (StreamWriter myWriter = new StreamWriter(path, false))
 {
     XmlSerializer mySerializer = new XmlSerializer(typeof(your_object_type));
     mySerializer.Serialize(myWriter, objectToSerialize);
 }

Также помните, что для работы XmlSerializer нужен конструктор без параметров.

0
задан halfer 3 March 2019 в 22:30
поделиться

1 ответ

Ниже код делает то, что вы хотите, но на базовом уровне для закрытия соединения одного клиента. Вы должны реструктурировать свой код для обработки нескольких клиентов, если хотите. Лучшей идеей будет запуск нового потока для каждого соединения одного и того же сокетного соединения, чтобы вы могли обрабатывать их отдельно.

import socket
import _thread
import os

clear = lambda: os.system("cls")
port = 1026
try:
    Server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    Server.bind(("127.0.0.1",1026))
    Server.listen(2)
    print("--------------------------------------")
    print("Server running on port %s" % str(port))
    print("--------------------------------------")
except Exception:
    print("error while starting server")
    input()
    exit()

def control(sock):
    while True:
        command = input()
        if command == "exit()":
            sock.close()
            os._exit(0)
            #interrupt code here


while True:
    con,ip = Server.accept()
    _thread.start_new_thread(control,(con,))
    print(str(ip) + " Connected")

    try:
        cmd = str(con.recv(1024).decode())  #<-- interrupt this line
    except Exception:
        print("Error")
0
ответ дан Ashish Ghodake 3 March 2019 в 22:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: