In a x86 stack I needn't fill sin_zero with 2 "push 0" in POSIX-compliant architectures. But must I in Windows?
struct sockaddr_in {
short sin_family; // e.g. AF_INET, AF_INET6
unsigned short sin_port; // e.g. htons(3490)
struct in_addr sin_addr; // see struct in_addr, below
char sin_zero[8]; // zero this if you want to
};