Size: a a a

Сообщество Python Программистов

2020 February 17

JM

Jamshed Mazakov in Сообщество Python Программистов
Dmitry Danilov
Хотя Наверное либа организовывает поддержание стека. ПоковырЯй короч. Если получится поделись )
import socket


socket.IPPROTO_SCTP = 132

server = socket.socket(socket.AF_INET,
                      socket.SOCK_SEQPACKET,
                      socket.IPPROTO_SCTP)
server.bind(('127.0.0.1', 1234))
server.listen(5)

print('Waiting for messages...')
while True:
   try:
       buffer = b''
       flags = None
       while flags != socket.MSG_EOR:
           # If socket.MSG_EOR is not on flags it means the message is greater
           # than the return of this call.
           # Note: here we're appending data to buffer without checking if
           # sender is the same from already buffered data (don't know if
           # this check is needed since SCTP guarantees order).
           data, ancillary_data, flags, sender = server.recvmsg(1024)
           buffer += data
       print('Received from {}: {}'.format(sender, buffer))

       reply = b'server reply to ' + buffer
       server.sendmsg([reply], [], socket.MSG_EOR, sender)
       print('Sent to {}: {}'.format(sender, reply))
   except KeyboardInterrupt:
       break

server.close()
источник

JM

Jamshed Mazakov in Сообщество Python Программистов
Сорри за большой текст Админы.
источник

JM

Jamshed Mazakov in Сообщество Python Программистов
Jamshed Mazakov
import socket


socket.IPPROTO_SCTP = 132

server = socket.socket(socket.AF_INET,
                      socket.SOCK_SEQPACKET,
                      socket.IPPROTO_SCTP)
server.bind(('127.0.0.1', 1234))
server.listen(5)

print('Waiting for messages...')
while True:
   try:
       buffer = b''
       flags = None
       while flags != socket.MSG_EOR:
           # If socket.MSG_EOR is not on flags it means the message is greater
           # than the return of this call.
           # Note: here we're appending data to buffer without checking if
           # sender is the same from already buffered data (don't know if
           # this check is needed since SCTP guarantees order).
           data, ancillary_data, flags, sender = server.recvmsg(1024)
           buffer += data
       print('Received from {}: {}'.format(sender, buffer))

       reply = b'server reply to ' + buffer
       server.sendmsg([reply], [], socket.MSG_EOR, sender)
       print('Sent to {}: {}'.format(sender, reply))
   except KeyboardInterrupt:
       break

server.close()
Вроде он работал, на ubuntu тестил, но мар пока не принимал.
источник

БГ

Бензофуран Гетероцикл in Сообщество Python Программистов
Бензофуран Гетероцикл
Нихуя, а ast.dump(...) это очень даже прикольная тема
С помощью такой хуйни можно код на питоне в код на других языках переводить, лол
источник

DD

Dmitry Danilov in Сообщество Python Программистов
Jamshed Mazakov
Вроде он работал, на ubuntu тестил, но мар пока не принимал.
На сколько я все это дело помню. После sctp надо поднять sccp уровень, там прописываются gt и поднимается линк, затем уже выше на уровне аппликейшн ты получишь свой заветный map.
источник

БГ

Бензофуран Гетероцикл in Сообщество Python Программистов
Language:
py3


Source:
from random import randint
def roll(*dice):
   return sum(randint(0, die) for die in dice)
print(roll(6))
print(roll(6, 6))
print(roll(6, 6, 6))


Result:
6
3
11
источник

БГ

Бензофуран Гетероцикл in Сообщество Python Программистов
Какого хуя это работает
источник

JM

Jamshed Mazakov in Сообщество Python Программистов
Dmitry Danilov
На сколько я все это дело помню. После sctp надо поднять sccp уровень, там прописываются gt и поднимается линк, затем уже выше на уровне аппликейшн ты получишь свой заветный map.
Хорошо, пойду гуглить sccp.
источник

JM

Jamshed Mazakov in Сообщество Python Программистов
Спасибо
источник

l

let45fc in Сообщество Python Программистов
Бензофуран Гетероцикл
Какого хуя это работает
А что не должно тут работать?
источник

l

let45fc in Сообщество Python Программистов
Бензофуран Гетероцикл
Language:
py3


Source:
from random import randint
def roll(*dice):
   return sum(randint(0, die) for die in dice)
print(roll(6))
print(roll(6, 6))
print(roll(6, 6, 6))


Result:
6
3
11
Кстати интересный код для имитации броска кубов
источник

БГ

Бензофуран Гетероцикл in Сообщество Python Программистов
let45fc
А что не должно тут работать?
Вот та часть которая передаётся в sum
источник

БГ

Бензофуран Гетероцикл in Сообщество Python Программистов
Типа
источник

БГ

Бензофуран Гетероцикл in Сообщество Python Программистов
Это же голый генератор
источник

БГ

Бензофуран Гетероцикл in Сообщество Python Программистов
Даже без скобок
источник

l

let45fc in Сообщество Python Программистов
Всмысле? Там все окей, sum берет данные из этого генератора
источник

l

let45fc in Сообщество Python Программистов
В sum должен передаваться итерируемый объект. Генератор итерируемый
источник

БГ

Бензофуран Гетероцикл in Сообщество Python Программистов
Language:
py3


Source:
def test(*args):
   return print(arg for arg in args)
test(1,2,3)


Result:
<generator object test.<locals>.<genexpr> at 0x7ff1374a3fc0>
источник

l

let45fc in Сообщество Python Программистов
Ну и
источник

БГ

Бензофуран Гетероцикл in Сообщество Python Программистов
Я привык что генераторы в скобки заворачивают
источник