MFC Client mit mehreren Verbindungen zu einem Server

thekiller

Viceinator
Hallo,

ich bin gerade dabei einen Client zu programmieren, der mehrere Verbindungen zu einem Server aufbauen kann. Den Server(der auch mehrere Clients bearbeiten kann) habe ich mit Qt4 programmiert und der läuft auch wunderbar. Mehrere "verschiedene" Clients können sich auch verbinden.

So nun zum eigentlichen. Ich programmiere den Client mit MFC CSockets und mehreren Threads.
Ich habe mir für die verschiedenen Verbindungen eine kleine Struktur zusammengebastelt.

C++:
struct	STR_Connections {
	BOOL		IsConnected;
	UINT		ID;
	UINT		uiReceiveValue;
	UINT		uiPort;
	string		szHostnameIP;
	CSocket		*pSocketConnection;
	BYTE		*bBuff;
};

In meiner Klasse die den Netzwerkkram behandelt erstelle ich mehrere Instanzen dieser Struktur.
C++:
STR_Connections *Connections;

Welche dann noch initialisiert werden.

C++:
for(i = 0; i < this->MaxConnections; i++) {
	this->Clients[i].bBuff				= new BYTE[MAX_DATATRANSFER_LENGTH];
	this->Clients[i].ID					= -1;
	this->Clients[i].IsConnected		= false;
	this->Clients[i].pSocketConnection	= new CSocket;
	this->Clients[i].szHostnameIP		= "127.0.0.1";
	this->Clients[i].uiPort				= 50000;
	this->Clients[i].uiReceiveValue		= 0;
}

Funktioniert bis dahin auch noch alles. Ich kann auch EINE Verbindung funktionsfähig herstellen mit dem Server.
Dies mach ich mit folgendem Aufruf.

C++:
this->Connections[ConID].pSocketConnection->Socket();
while(!this->Connections[ConID].pSocketConnection->Connect(A2BSTR(this->Connections[ConID].szHostnameIP.c_str()), this->Connections[ConID].uiPort)) {
	// Wartezeit für Verbindungsversuche
	Sleep(1000);
}

Sobald ich ich aber eine weitere Verbindung aufbaue stürzt meine Anwendung ab. Ich habe sichergestellt, dass die sockets nicht überschieben werden.
Es ist auch unerheblich in welchem Thread der Aufruf für einen Verbindungsaufbau getätigt wird. Es funktioniert wie gesagt nur EINE Verbindung.
Der Server bekommt davon scheinbar auch nichts mit außer dass die Verbindung zum Client unterbrochen wurde.

Hab ich vielleicht irgendwas vergessen was für weitere Verbindung notwendig ist?

Mfg Manuel
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück