Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: SDL_Net

Lahha [03.10.2006 22:43:25]

#

Tuli tässä himo ruveta opetteleen jotai netti kirjastoo. Ja päätin sitten kokeillaa SDL:ää kun muutenki sitä paljon käytän.

Mut en löytäny miään hyvää opasta joten pelasin SDL_Net:in dokumentaation ja msdn:n Winsocks neuvojen avulla.
Ookns ny ymmärtäny tän homman oikein?

        int Game_Mode=NULL;
	int result=0;
	int len=0;
	TCPsocket CommSock;

	//ASETA: ip, tila ja sellaset


	//Yhdistä
	switch(Game_Mode)
	{
		case HOST:
		{
			TCPsocket ConSock;

			if(SDLNet_ResolveHost(&RemotePlayer.ip, NULL, DEFAULT_PORT)==-1) {
				fprintf(stderr, "SDLNet_ResolveHost: %s\n", SDLNet_GetError());
				return 1;
			}

			ConSock=SDLNet_TCP_Open(&RemotePlayer.ip);
			if(!ConSock) {
				fprintf(stderr, "SDLNet_TCP_Open: %s\n", SDLNet_GetError());
				return 1;
			}

			CommSock=SDLNet_TCP_Accept(ConSock);
			if(!CommSock){
				fprintf(stderr, "SDLNet_TCP_Accept: %s\n", SDLNet_GetError());
			}

			SDLNet_TCP_Close(ConSock);

			SDLNet_Write32(INTRO, data);
			len=strlen(data)+1;

			SDLNet_TCP_Recv(CommSock, data, len);

			if(data[0]!=500){ return 3; }
			else{
				result=SDLNet_TCP_Send(CommSock, data, len);
				if(result<len) {
					 fprintf(stderr, "SDLNet_TCP_Send: %s\n", SDLNet_GetError());
				}
			}
		}

		case CLIENT:
		{
			if(SDLNet_ResolveHost(&RemotePlayer.ip, "localhost", DEFAULT_PORT)==-1) {
				fprintf(stderr, "SDLNet_ResolveHost: %s\n", SDLNet_GetError());
				return 1;
			}

			CommSock=SDLNet_TCP_Open(&RemotePlayer.ip);
			if(!CommSock) {
				fprintf(stderr, "SDLNet_TCP_Open: %s\n", SDLNet_GetError());
				return 2;
			}

			SDLNet_Write32(INTRO, data);

			len=strlen(data)+1;
			result=SDLNet_TCP_Send(CommSock, data, len);
			if(result<len) {
				 fprintf(stderr, "SDLNet_TCP_Send: %s\n", SDLNet_GetError());
			}

			SDLNet_TCP_Recv(CommSock, data, len);

			if(data[0]!=500){ return 3; }
		}
	}

Metabolix [04.10.2006 12:59:24]

#

Mitä oikeastaan kysyt? Jos se toimii, niin se toimii, ja jos ei, niin sitten olet käsittänyt jotakin väärin. Ei nyt ole tässä kääntäjää käsillä eikä innostusta tuollaista kommentoimatonta koodia kahlata läpi, mutta ihan noin yleisesti sanoisin seuraavaa: Jos siinä on jotakin vikaa, kerro toki mitä. Jos taas ei, niin mitä kyselet? :)

Lahha [04.10.2006 14:15:59]

#

Tarkotin että onko toi ny oikeen että jää toi CommSock jonka kautta komminikoidaan. Kääntäjästä menee läpi. Ja ei toi ny mitenkään paha koodi ole kun vaan jättää noi if-jutut välistä.

No palaan asiaan sitten kun saan homman siihen vaiheeseen että voi kokeilla toimiiko.

Megant [04.10.2006 15:31:29]

#

Voin kertoa: tuo ei näytä järkevältä, esimerkiksi, kun servu saa yhteyden se suljetaan.
Ja kerro, että onko tarkoituksena, että servu osaa ottaa vastaan monia clienttejä, sillä tällöin koodi on aika lailla erilaista.

Lisäksi suosittelen sinua tutustumaan SDL_Netin socketsetteihin.

Tässä eräs melko yksinkertainen SDL:ää ja SDL_Net:iä käyttävä viestintäohjelma, joka taisi aikoinaan olla minulle ensimmäinen kokemus SDL_Net:stä.

Edit: skandit

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta