Use struct sockaddr_storage to handle IPv6 address properly.