1) Usually you need to call Bind if you want to create a server socket. There are some cases when you need to install a client socket, but more often it is not necessary for client sockets. If you want to wait for incoming connections on a specific port, you need to bind it. If you want to connect to some IP and ports, there is no need to bind them. Server socket binding provides exclusive access to the TCP port. Nothing else can connect to the network and bind to this port until your application closes or the socket is closed by you.
2) You indicate which IP address on the local computer you want to associate. One computer can have many IP addresses. Your computer may have a wired and wireless connection. Each of them has its own IP address in the local network. You can bind to one of these IP addresses and not to the other. You can even have one application bound to port 473 (for example) on one IP address and a completely different application connected to port 473 on another IP address. If you specify INADDR_ANY, you bind to all valid IP addresses that the machine has. Therefore, it does not matter which IP address the client used for you, it will work.
source share