Если вы используете сокет дейтаграммы (например, протокол UDP по IP), Socket API гарантирует, что если ваш n
меньше максимального размера полезной нагрузки, ваши данные будут отправлены в один пакет. Поэтому достаточно просто позвонить socket.send
.
Самый простой способ отправки данных через сокет stream - это использование метода socket.sendall
, так как send
для потоков не гарантирует, что все данные действительно отправлены (и вам следует повторно позвоните send
, чтобы передать все имеющиеся у вас данные). Вот пример:
>>> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>>> s.connect(('localhost', 12345))
>>> data = 'your data of length n'
>>> s.sendall(data)
Как уже упоминал @Alex, в Python нет ничего общего с какими-то "примитивами". Это как раз и проблема с Socket API.