OpenReactor 29 Опубликовано: 30 июля, 2021 import socket server = ("localhost", 8888) #I don't remember the port soc = socket.socket() soc.connect(server) version = soc.recv(5) #Decode it soc.send(bytes("PING", encoding="utf8")) pong = soc.recv(8) #Decode it Как реалезовать это: bytes("PING", encoding="utf8") 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 30 июля, 2021 Только байты интересуют? С сокетами проблем нету? У меня сомнения, потому что вопрос элементарный. Тем не менее. В питоне строка str хранит последовательность символов (codepoint) юникода каким-то абстрактным образом, потому что закодировать их можно по-разному: utf-8, utf-1, utf-16, utf-32, ucs-2 или какая-то другая, самопальная кодировка. bytes же — это набор байтов, как можно догадаться, а не символов. Если мы хотим из str сделать bytes, нужно абстрактный набор юникод-символов превратить в конкретную последовательность байтов — этим и занимается кодировка. Здесь bytes("PING", encoding="utf8") вернёт то же, что и литерал b'PING' в utf8-кодированном исходнике, например: последовательность из 4 байтов с номерами 90, 73, 78, 71. Теперь про Луа. В Луа никакого абстрактного набора символов нет. Строка в Луа — это не набор символов юникода, как str, а конкретная последовательность из произвольных байтов. То есть такая же вещь, как и bytes в Питоне. Поэтому аналог bytes("PING", encoding="utf8"), или же b'PING' (если исходник в кодировке utf-8), — просто "PING" (впрочем, опять-таки, в utf8-кодированном коде) sock:write("PING") 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
OpenReactor Автор вопроса 29 Опубликовано: 30 июля, 2021 1 час назад, Fingercomp сказал: Только байты интересуют? С сокетами проблем нету? У меня сомнения, потому что вопрос элементарный. Тем не менее. В питоне строка str хранит последовательность символов (codepoint) юникода каким-то абстрактным образом, потому что закодировать их можно по-разному: utf-8, utf-1, utf-16, utf-32, ucs-2 или какая-то другая, самопальная кодировка. bytes же — это набор байтов, как можно догадаться, а не символов. Если мы хотим из str сделать bytes, нужно абстрактный набор юникод-символов превратить в конкретную последовательность байтов — этим и занимается кодировка. Здесь bytes("PING", encoding="utf8") вернёт то же, что и литерал b'PING' в utf8-кодированном исходнике, например: последовательность из 4 байтов с номерами 90, 73, 78, 71. Теперь про Луа. В Луа никакого абстрактного набора символов нет. Строка в Луа — это не набор символов юникода, как str, а конкретная последовательность из произвольных байтов. То есть такая же вещь, как и bytes в Питоне. Поэтому аналог bytes("PING", encoding="utf8"), или же b'PING' (если исходник в кодировке utf-8), — просто "PING" (впрочем, опять-таки, в utf8-кодированном коде) sock:write("PING") Спасибо! С сокетами нету проблем) 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Как реалезовать это:
bytes("PING", encoding="utf8")
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах