PDA

Ver la versión completa : Problema con sockets!



kmkzk
05/02/2008, 17:41
Hola!
He empezado a aventurarme en el mundo de los sockets para experimentar un poco con creacion de aplicaciones cliente/servidor.
No he tardado 5 minutos en quedarme bloqueado...
Os posteo la tonteria que he programado para ver si me podeis echar un mano, o ayudarme a sacar donde esta el error:



#include <errno.h>
#include <sys/types.h>
#include <winsock.h>

int main(int argc, char *argv[])
{
int sock;

if ((sock = socket(AF_INET, SOCK_STREAM,0))==-1){
perror("socket()!");
exit(1);
}

}

Como veis, nada mas sencillo que la creacion del socket. Sin embargo la salida que recibo es esta:

socket()!: No error

Y sale por el exit(1)...

He pensado que pueda ser por que las librerias que uso no funcionan del todo bien (Winsock?). A ver si alguno que tenga experiencia con este tema puede echarme una mano o iluminarme un poquito! :D

Gracias y un saludo
:brindis:

juanvvc
05/02/2008, 18:01
&#191;Te das cuenta de que est&#225;s en el foro de Gp2x? Como buena variante de *nix la gp2x utiliza sys/socket.h, que es muy parecida pero no igual.

A&#250;n as&#237;, winsucks es una librer&#237;a Windows con miles de fallos y poco documentada. Increible me parec&#237;a a m&#237; cuando intentaba sacar algo de ella. Creo que la mejoraron en su versi&#243;n 2 y te recomiendo que la uses (#include <winsock2.h>), pero afortunadamente nunca tuve que volver a pelearme con ella. Si puedes usa mejor el paquete System.Net.Sockets de .NET, mucho m&#225;s sencillo de usar baifar.

Enig&#252;ei, el tercer par&#225;metro de la llamada ha de ser IPPROTO_TCP, supongo (socket TCP/IP). Con 0 se coge un protocolo por defecto en la versi&#243;n *nix, pero vete t&#250; a saber qu&#233; hace en windows porque aguein no est&#225; documentado (http://msdn2.microsoft.com/en-us/library/ms740506(VS.85).aspx)

headoverheels
05/02/2008, 22:24
Ten en cuenta que antes de utilizar ninguna función de winsock tienes que hacer una llamada a WSAStartup http://msdn2.microsoft.com/en-us/library/ms742213.aspx

kmkzk
05/02/2008, 22:31
Muchas gracias juanvvc :)
Estoy usando el DevCpp (para Windows), y la &#250;nica libreria de sockets que trae es la Winsock. Como dices, parece que es una patata, asi que ser&#225; mejor que me las arregle para usar las sys/socket, o sino pasarme a .NET
Un saludo

edito: Acabo de leer tu post, headoverheels, vaya coordinaci&#243;n X)
Le echar&#233; un vistazo a la WSAStartup y os comento.
Gracias!

< - >
Vaya! Acabo de probar con la función WSAStartup y por ahora furrula! :D