Bonsoir, deux applications, bon pour etre original: serveur et client.
Chacune de leur cote effectue ce code:
Serveur:
----------------------
if(WSAStartup(MAKEWORD(2,0),&WSAData)!=NO_ERROR)
{
...
}
ws_sin.sin_family=AF_INET;
ws_sin.sin_port=htons(port);
ws_sin.sin_addr.s_addr=INADDR_ANY;
sock_main=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(sock_main==INVALID_SOCKET)
{
...
}
if(bind(sock_main,(SOCKADDR *)&ws_sin,sizeof(ws_sin))==SOCKET_ERROR)
{
...
}
if(WSAAsyncSelect(sock_main,hwnd,WM_SOCKET,FD_ACCEPT|FD_READ|FD_WRITE|FD_CLOSE)!=0)
{
...
}
Client:
----------------------------------
if(WSAStartup(MAKEWORD(2,0),&WSAData)!=NO_ERROR)
{
...
}
ws_sin.sin_family=AF_INET;
ws_sin.sin_port=htons(hport);
ws_sin.sin_addr.s_addr=inet_addr(host);
sock_main=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(sock_main==INVALID_SOCKET)
{
...
}
if(bind(sock_main,(SOCKADDR *)&ws_sin,sizeof(ws_sin))==SOCKET_ERROR)
{
...
}
if(WSAAsyncSelect(sock_main,hwnd,WM_SOCKET,FD_ACCEPT)!=0)
{
...
}
Le probleme est si le port = hport, et supposons que je lance le serveur avant le client, le bind du client echou. Il retourne l erreur WSAEADDRINUSE. Sur MSDN:...only one usage of each socket address (protocol/IP address/port) is permitted...
1)Comment? Pour que mon client se connect a mon serveur il fau bien que port=hport ! Ben apparament MSDN me dit que je peux pas... Cela veu dire que je ne peux pas tester mes applications en locale ?
2)MSDN aussi affirme que pour un client , il n'est pas necessaire de faire un bind...
Merci d'avance
l3KTr0 Was HeRe