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; } } }
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? :)
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.
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
Aihe on jo aika vanha, joten et voi enää vastata siihen.