Мне нужно получить протокол (HTTP, FTP, SSMTP, IMAP, ETC) из ip-адреса и порта с Python3.
Пример:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
protocol = s.connect( ("localhost", 80 )
print protocol #print HTTP
В общем случае невозможно определить тип протокола сервера, прослушивающего какой-либо порт. Лучшее, что вы можете получить, - это запросить имя службы, которая обычно ассоциируется с некоторым номером порта:
>>> socket.getservbyport(80)
'www'
getprotobytnumber()
. Этого нет в стандартных библиотеках, но похоже, что вы можете использовать bitbucket.org/maze/getent/src/408aef1743dc/getent/libc.py