Проблема с клиент сокетом, не могу разобраться как сделать ожидание приема данных

Signal

Новичок
Пользователь
Сен 28, 2021
2
0
1
Пишу дополнение для kodi, в питоне я новичок, можно сказать первый день. Python 2.7
Пишу сокет клиент
Python:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((ipToConnect, int(PortToConnect)))
sock.sendall(u'hello, world!')
собственно вопрос такой, как мне написать, чтоб sock.recv вызывался при приеме данных и был асинхронным
и вопрос второй, этот клиент должен получать как некоторые текстовые данные и картинки в формате JPG, как мне определять какие данные пришли (хотя думаю можно определить по размеру принятых данных, но все же) и как принятую картинку сохранить в файл?

заранее благодарен
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 589
459
83
как мне написать, чтоб sock.recv вызывался при приеме данных и был асинхронным
для этого sock.sendall тоже должен быть асинхронным...
как мне определять какие данные пришли
можно делать заголовок пакета, где укажете размер и тип данных, например - 4 первых байта размер и 4 вторых байта тип данных
как принятую картинку сохранить в файл
если картинку читаете в бинарном виде, как файл, то просто на принимающей стороне создаете файл и пишите в него байты
 

Signal

Новичок
Пользователь
Сен 28, 2021
2
0
1
для этого sock.sendall тоже должен быть асинхронным...

можно делать заголовок пакета, где укажете размер и тип данных, например - 4 первых байта размер и 4 вторых байта тип данных

если картинку читаете в бинарном виде, как файл, то просто на принимающей стороне создаете файл и пишите в него байты
ну вы написали очевидные вещи, я не пойму, как сделать, скажем как в javascript

JavaScript:
socket.on('recive', function(Data) {
    
});
а, как это сделать в питоне, совсем не въеду, и как можно прибить ошибки, если сервер не доступен, скажем
 

Форум IT Специалистов