Пишу дополнение для kodi, в питоне я новичок, можно сказать первый день.
Пишу сокет клиент
 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((ipToConnect, int(PortToConnect)))
sock.sendall(u'hello, world!')

собственно вопрос такой, как мне написать, чтоб sock.recv вызывался при приеме данных и был асинхронным
и вопрос второй, этот клиент должен получать как некоторые текстовые данные и картинки в формате JPG, как мне определять какие данные пришли (хотя думаю можно определить по размеру принятых данных, но все же) и как принятую картинку сохранить в файл?

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