no te puedo ayudar por que no se sockets, pero si te puedo decir que este bucle esta mal programado:
Código:
printf("Teclee opcion: ");
printf("\n\t1-envio");
printf("\n\t2-recepcion");
printf("\n\t3-salir\n");
scanf("%d", &opcion);
do{
if(opcion==1)
envio();
else if (opcion == 2)
recepcion();
}while (opcion != 3);
si metes un 4:
opcion=4
4!=3 => while se repite siempre: bucle infinito. no puedes salir de el, estaria todo el rato comparando opcion con 1 y con 2.
por cierto, me interesa aprender sockets, me puedes decir si lo que has programado es para linux o para windows?