UDP queue size
Nick Craig-Wood
nick at craig-wood.com
Wed Jun 17 11:29:31 EDT 2009
§ä´M¦Û¤vªº¤@¤ù¤Ñ <command.bbs at alexbbs.twbbs.org> wrote:
> I got a problem about UDP.
>
> How do I get the UDP buffer size?
>
> When the server had some delay in handling incoming UDP, it will lost
> some package. I wonder it's because the system buffer size, is there any
> ways to find the exactly size of the buffer?
>
> ex:
>
> client.py
> import socket
>
> s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
> for i in xrange(1000):
> s.sendto('xxx', ('192.168.1.135',10000))
>
>
>
> server.py: in ip (192.168.1.135)
> import socket
> import time
> s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
> s.bind(('',10000))
> time.sleep(10)
>
> # here will only recv 255 package, others are lost...
> for i in xrange(1000):
> msg, addr = s.recvfrom(500)
> print i
I think you want setsockopt...
>>> import socket
>>> import time
>>> s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
>>> s.bind(('',10000))
>>> s.getsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF)
112640
>>> s.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 1048576)
>>> s.getsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF)
262142
>>>
I ran the above on linux and I expect the limit 262144 is settable in
/proc/sys/net somewhere.
No idea whether the above works on windows!
--
Nick Craig-Wood <nick at craig-wood.com> -- http://www.craig-wood.com/nick
More information about the Python-list
mailing list