je m'explique je suis arrivé a creer un serveur qui peut accepter 2 client mais le probleme est que si j'essaye de creer les 2 sockets sur le meme port ma deuxieme socket me renvoie INVALID_SOCKET mais si je change de port entre la premiere et la deuxieme tou marche bien
voila le code
#include <winsock2.h>
#include <iostream>
using namespace std;
DWORD WINAPI dwThreadProc(LPVOID lParam);
DWORD dwThread;
HANDLE hThread;
WSADATA WSAData;
SOCKET sock;
SOCKET csock1;
SOCKET csock2;
SOCKADDR_IN sin;
SOCKADDR_IN csin;
int sinsize;
char Message[65535];
int main (int argc, char* argv[])
{
WSAStartup(MAKEWORD(2,2), &WSAData);
hThread = CreateThread(NULL, 0, dwThreadProc, 0, CREATE_SUSPENDED, &dwThread);
ResumeThread(hThread);
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr = INADDR_ANY;
sin.sin_family = AF_INET;
sin.sin_port = htons(23);
bind(sock, (SOCKADDR *)&sin, sizeof(sin));
listen(sock, 0);
sinsize = sizeof(csin);
csock1 = accept(sock, (SOCKADDR *)&csin, &sinsize);
Sleep(1000);
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr = INADDR_ANY;
sin.sin_family = AF_INET;
sin.sin_port = htons(23);
bind(sock, (SOCKADDR *)&sin, sizeof(sin));
listen(sock, 0);
sinsize = sizeof(csin);
csock2 = accept(sock, (SOCKADDR *)&csin, &sinsize);
Sleep(100000);
}
DWORD WINAPI dwThreadProc(LPVOID lParam)
{
while (strcmp(Message,"exit")!= 0)
{
if((csock1 != INVALID_SOCKET))
{
cin.getline(Message, 65535);
send(csock1, Message, sizeof(Message), 0);
}
}
while (strcmp(Message,"quit")!= 0)
{
if((csock2 != INVALID_SOCKET))
{
cin.getline(Message, 65535);
send(csock2, Message, sizeof(Message), 0);
}
else
{
cout << "la socket est invalide\n";
}
}
}
comme vous le voyer mon programme essaye d'abord d'envoyer des info a la premiere socket et si on tape "exit" on passe a la deuxieme socket.