bool mk_socket::Connect(const char *hostname,unsigned short port)
{
if (GetState()!=IDLE)
{
send_error(STATE_IS_NOT_IDLE);
return false;
}
unsigned long ip=GetIP(hostname);
if (ip==INADDR_NONE)
{
send_error(BAD_HOSTNAME);
return false;
}
sockaddr_in sin=FillAddr(ip,port);
sock = socket(PF_INET, SOCK_STREAM, 0);
/**************************************************************
IL FAUT CONTINUER A ECRIRE LA GESTION D'ERREURS A PARTIR DE LA.
**************************************************************/
//Et voir comment traiter les code d'erreur renvoyé par la bibliothèque standard...
if (sock==INVALID_SOCKET)
return false;
int ret=connect(sock,(sockaddr*)&sin,sizeof(sockaddr));
if (ret==0)
{
etat=CONNECTED;
new_thread(mk_SckProc,this);
if (OnConnect!=NULL)
new_thread(mk_ConnectProc,this);
return true;
}
else
{
close_socket(sock);
return false;
}
}