WinSock palīdzība
Re: WinSock palīdzība
Nezinu , iedomajos ka tas kautkada veidā varēt nokart serveri..+ veel tas ka es no servera katram klientam aizsutu viņa ID...
//OpenGL
Re: WinSock palīdzība
emm radās 1 neliela problēmiņa, kā lai katram klientam nosuta atsevišķi savu sutijumu un nolasa to no katra klienta...
itka meiģinaju
bet tad ir ta ka pirmais klients suta datus lidz biridim kad piesledzas vina vieta kads cits.. (velak 1ma vietu ieņem nakamais untt);
itka meiģinaju
Code: Select all
for(int i=0;i!=100;i++)
{
char...
Recive(...
memcpy(....
}
//OpenGL
Re: WinSock palīdzība
Ieteiktu nesteigties notikumiem pa priekšu un vispirms izveidot normālu savienojumu sistēmu, kur vairāki klienti var pieslēgties pie viena servera. Kad to dabūsi gatavu, tad gan jau būs skaidrs, kā tikt galā ar šo problēmu.
Re: WinSock palīdzība
Nū tas jau itka ir izdarīts.. vismaz uz doto brīdi serverim var pieslegties vairaki klienti (nezinu cik maksimali )+ samera normali....
testeju uz vairakiem pc...un itka savienojums bija stabils..:/
testeju uz vairakiem pc...un itka savienojums bija stabils..:/
//OpenGL
Re: WinSock palīdzība
Kad klienti pieslēdzas, tev viņiem jāiedod ID, kuru klienti pievienos visam, ko sūtīs, lai serveris varētu to ID nolasīt no sūtījuma un saprast, par kuru klientu iet runa.
Re: WinSock palīdzība
Nu ja nemaldos tad tadu funkciju pilda
šis kods...
Man nav ne jausmas ka lai talak dara..
(Speletajs nosuta poziciju serverim)kur serveris atlasa visus id neskaitot sutitaja un suta citiem klientiem..) kaut kā tā?
šis kods...
Code: Select all
while(1)
{
for(int i = 0; i < 100; i ++)
{
if(Clients < 100)
{
int so2len = sizeof(i_sock2);
sock2[Clients] = accept(sock, (sockaddr *)&i_sock2, &so2len);
if(sock2[Clients] == INVALID_SOCKET)
continue;
printf("Piesledzas^ID %d \n",Clients);
Clients++;
continue;
}
else
{
break;
}
//return 1;
send_inID = Clients;
}
}
_endthread();
(Speletajs nosuta poziciju serverim)kur serveris atlasa visus id neskaitot sutitaja un suta citiem klientiem..) kaut kā tā?
//OpenGL
Re: WinSock palīdzība
Nosūtītā informācija ir jāatgriež arī sūtītāj klientam, jo klients sūta pieprasījumu izmaiņām(vismaz tā ir loģiski, ja nevēlies blēžus), serveris apstrādā un, ja nesūtīs sūtītājam, sūtītājs paliks vecajās koordinātēs.
Arrovs vēl joprojām dzīvs.
Re: WinSock palīdzība
gadījumā nebūs tieši otrādāk?
ja speletājs aizsuta tagadējos datus.. (ir mainijis pozicijas un saņem atpakaļ savas iepriekš sūtitās kuras to noved atpakaļ pie koardinatām kuras aizsutija iepriekš)?
|
v
ja speletājs aizsuta tagadējos datus.. (ir mainijis pozicijas un saņem atpakaļ savas iepriekš sūtitās kuras to noved atpakaļ pie koardinatām kuras aizsutija iepriekš)?
|
v
//OpenGL
Re: WinSock palīdzība
Tu nosūtīsi nevis koordinātas serverim, bet pieprasījumu pārvietot varoni x,y virzienā. Serveris jau zin tavas vecās koordinātes, tad pārvieto tevi par piem. 10x un aizsūta jaunās koordinātes gan tev gan pārējiem klientiem, kur atliek to nomainīt vizuāli.
Klients ir hakojams. Tavā gadījumā klients var pateikt, ka pārvietojas ar gaismas ātrumu, jo neviens to nekontrolē.
Klients ir hakojams. Tavā gadījumā klients var pateikt, ka pārvietojas ar gaismas ātrumu, jo neviens to nekontrolē.
Arrovs vēl joprojām dzīvs.
Re: WinSock palīdzība
Serverim, atbilde ir jāsūta tikai gadījumos, ja spēle ir click-to-move, kur servera pusē rēķina pathfindingu. Savādākos gadījumos(piem. wow), serveris nesūtis pozīcijas atpakaļ sūtītājam, bet diskonektos lietotāju, ja uzskatīs šo par krāpnieku.