I have two udp+sockets questions (mostly solaris oriented):
If I understand correctly when an applications sends a UDP packet in a
host/port where noone is listening an ICMP "Port Unreachable" message will
be returned (or may be returned as I found in an RFC). If instead somebody
is listening, then the packed will be stored in a kernel buffer. My question
is how is it determined by the receiving OS if somebody is listening in some
port, does it have a timeout from the last recvfrom() call?
and if so how is this timeout altered.
Reading the udp(7P) manual in solaris 2.7 it is stated that:
"A queue of received packets is provided for each UDP socket. This queue
has a limited
capacity. Arriving datagrams which will not fit within its high-water
capacity are silently
doing a ndd /dev/udp \? reveals "the udp_recv_hiwat" which sets the
"default maximum UDP socket receive buffer in bytes " according to Sun. In
machine it's 8192 bytes. There is also udp_max_buf which " Controls how
large send and receive buffers (in bytes) can be for a UDP socket." which
My question is: I want to receive a constant 4Mbps video stream from a video
between recvfrom calls the 8K buffer should fill easily, it seems reasonable
to change this
buffer. Is it the standard procedure to raise the udp_recv_buf or am I
Also, I cannot understand completely the difference between udp_recv_buf and
Thank you for your time.