C++ Winsock

3Cyb3r

Erfahrenes Mitglied
Moin
Ich bin totaler Netzwerk programming Knub.
Ich hab nun folgendes anahnd eines Tutrials hinbekommen was auch super und einwandfrei funktioniert:

Code:
CClient::CClient()
{
	rc=StartWinsock();
	if(rc!=0)
	{
		//Fehler: startWinsock, fehler code: %d\n",rc);
	}
	else
	{
    //"Winsock gestartet!\n");
	}

	s=socket(AF_INET,SOCK_STREAM,0);

	if(s==INVALID_SOCKET)
	{
		//"Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n",WSAGetLastError());
	}
	else
	{
		//"Socket erstellt!\n");
	} 
}

CClient::~CClient()
{

}

int CClient::StartWinsock()
{
	WSADATA wsa;
	return WSAStartup(MAKEWORD(2,0),&wsa);
} 

int CClient::Connect()
{
	memset(&addr,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten 

	addr.sin_family=AF_INET;
	addr.sin_port=htons(12345); // wir verwenden mal port 12345
	addr.sin_addr.s_addr=inet_addr("127.0.0.1"); // zielrechner ist unser eigener

	rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));

	if(rc==SOCKET_ERROR)
	{
		//"Fehler: connect gescheitert, fehler code: %d\n",WSAGetLastError());
		return 1;
	}
	else
	{
		//"Verbunden mit 127.0.0.1..\n");
		return 0;
	} 
}

void CClient::test()
{
	while(1)
	{
		char message[254] = "test 1 2 3 4";
		send(s, message, strlen(message), 0);
		Sleep(1000);
	}
}

So kann mir nun jemand helfen wie ich die Message von Server abfange?
Ich brauche das für ein Spiel. TImer gesteuret soll alle 500ms überprüft werden
ob eine Message da ist undwenn ja wird diese weiter verarbeitet.

Wie müsste die Fukntion aussehen?
Code:
recv(?);
Code:
if(rc==0 || rc==SOCKET_ERROR)
{
          closesocket(?); // socket schliessen          
} 
else //weiterverabeiten

ach und noch etwas:
Was muss in den Destruktor um die Verbindung sauber zu schließen?

//edit

Hat sich erledigt -.- Frage war ein bischen unnötig ichweiß -.-
 
Zurück