Найти - Пользователи
Полная версия: Буффер UDP сервера
Начало » Network » Буффер UDP сервера
1 2
коля
Здравствуйте!
К серверу подключены несколько клиентов. Эсть ли буффер для каждого клиента и его размер.
Alex2ndr
коля
К серверу подключены несколько клиентов.
К какому серверу и каких клиентов? Сферических клиентов к сферическому серверу в вакууме? :)
Если вы говорите про самописный сервер, то от вас зависит есть там буфер или нет.
коля
Alex2ndr
коля
К серверу подключены несколько клиентов.
К какому серверу и каких клиентов? Сферических клиентов к сферическому серверу в вакууме? :)
Если вы говорите про самописный сервер, то от вас зависит есть там буфер или нет.
UDP сервер + UDP клиенты, Win XP, Python 2.7

Использую socket модуле

          # Define UDP server socket object
Server_Socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

# Enable address re-using
Server_Socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

# Set receiving buffer size
Server_Socket.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUFF, 32768)

# Bind server socket object to server IP address and port number
res = Server_Socket.bind((Server_IP_Address,Server_Port_Number))

# Set server socket in non-blocking mode
Server_Socket.setblocking(0)
Server_Socket.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUFF, 32768) для каждого клиента ли относится?
Андрей Светлов
Что значит “для каждого клиента”?
Параметр относится к вашему серверному UDP сокету.
Не путайте с TCP, который делает по сокету на клиента в connect.
К тому же, надеюсь, вы понимаете - этот параметр устанавливает размер буфера и никак не относится к размеру UDP пакета. В общем - довольно бесполезная вещь.
коля
Слово о буффере. Размер пакета - иное дело. У меня пакеты маленькие.
Дело в том, что читая буффер, получаю толко один пакет, хотя читаю реже, чем клиент высылает и должно быть не один, а больше.
Андрей Светлов
Думаю, вы таки читаете не буфер а сокет. Буфер - скрытая штука.
В винде он по умолчанию 8K, на линуксе гораздо больше.
Неужели у вас 4 килобайтные UDP пакеты?
коля
Андрей Светлов
Думаю, вы таки читаете не буфер а сокет. Буфер - скрытая штука.
В винде он по умолчанию 8K, на линуксе гораздо больше.
Неужели у вас 4 килобайтные UDP пакеты?
Уже писал, что пакеты маленькие. Буффер увеличил до 32к, а в пакеты всего GGA и RMC от GPS.
По моему, чтение с recv или recfrom читает именно буффер сокета. Выходит что нада читать как можно быстрее так как все клиенты пишут в одного и то же буффера, причем каждый новый запис стирает старого.
Или ошибаюсь???

В принципе ето связано с BSD, а не Питона.
sypper-pit
ты во фряшке хочешь по UDP передавать данные, мне так и не ответили http://python.su/forum/viewtopic.php?id=8658 на тему про icmp, хотя эта утилитка может передавать по UDP(при правильной настройке)
Андрей Светлов
коля, наконец то понял что вы имеете в виду.
Да, естественно, все пакеты на UDP сокет попадают в один буфер.
Если их не выбирать оттуда, старые начнут пропадать, если им не хватит место. Буфер - циклический.
коля
Спасибо Андрей!
Только у меня буффер 32к, покеты как сказал маленькие, а никак не могу добиться читать больше одного пакета сразу.
Выходит, что буффер только для одного пакета. В тредам начал разбиратся …
Может и плохо обьясняю. Русский не родной, учил его давно, а и не с кем пользовать. Извините …
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB