socket en c para windows

Hola a todos, soy nuevo en el foro y no se si me podeis echar una mano porque no se el porque del fallo del programa. Estoy realizando una aplicacion en c con socket para windows para comunicar dos equipos, compila perfectamente pero cuando lo ejecuto no crea la conexion ni nada es como que esta en un bucle infinito sin hacer nada, estoy usando el entorno netbeans con el compilardor MinGW espero qeu me podais ayudar gracias e antemano os dejo el codigo.

#include<stdio.h>
#include<windows.h>
#include<winsock2.h>
#include<string.h>
#include <winsock.h>

#pragma comment(lib, "libws2_32.a")

#define puerto 5158

int main(){

WSADATA wsa;
SOCKET sock;
int conexion;
char buffer[20];
struct sockaddr_in server;

WSACleanup();
printf("hola0 \n");

WSAStartup(MAKEWORD(2,2),&wsa);

printf("\n hola 1");
sock=socket(AF_INET,SOCK_STREAM,6);

server.sin_family= AF_INET;
server.sin_addr.s_addr=INADDR_ANY;
server.sin_port=htons(puerto);

if(bind(sock,(struct sockaddr *)&server,sizeof(server))==-1 ){
printf("error asociando");
exit(0);
}

printf("Esperando Clientes\n");
listen(sock,1);

if((sock=accept(sock,0,0))<0){
printf("error aceptando connexion");
exit(0);
}

puts("Cliente conectado");

if(recv(sock,buffer,sizeof(buffer),0)==-1){
printf("error reciviendo");
exit(0);
}
printf("Esto es lo que envio el cliente;\n");
puts(buffer);

closesocket(sock);

WSACleanup();

return 0;
}

¿Dónde está el Arduino?

@txenfsm creo que te has equivocado de comunidad a la hora de preguntar, yo de ti buscaría alguna comunidad en google relacionado con ese mundo.