Well, my question may look like a basic stuff, but I am new to network programming side. I wish to know:
Is it always required to bind
a socket in order to receive message from that? I saw a sniffer code (raw socket) one in which directly it is invoking recvfrom
and another piece of code in which it is invoking bind
and then a receive.
What is the difference between the AF_*
and PF_*
family? Is the later related to POSIX?
Which is the one recommended ?
No, you don't need to bind()
.
If you're using a TCP or UDP socket where you are planning to either connect()
or send a packet to a destination with sendto()
, the kernel will automatically bind the socket to a suitable port number when you try to connect()
or send()
. This is generally the preferred way. bind()
ing client sockets is considered harmful.
The same is also true of AF_UNIX
sockets - the client side does not need to bind, and should not do so normally.