Page 3 of 4

Re: WinSock palīdzība

Posted: 01 Oct 2011, 12:30
by CodeWolf
Nezinu , iedomajos ka tas kautkada veidā varēt nokart serveri..+ veel tas ka es no servera katram klientam aizsutu viņa ID...

Re: WinSock palīdzība

Posted: 03 Oct 2011, 19:36
by CodeWolf
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

Code: Select all

for(int i=0;i!=100;i++)
{
char...
Recive(...
memcpy(....
}
bet tad ir ta ka pirmais klients suta datus lidz biridim kad piesledzas vina vieta kads cits.. (velak 1ma vietu ieņem nakamais untt);
:?

Re: WinSock palīdzība

Posted: 03 Oct 2011, 21:38
by snake5
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

Posted: 03 Oct 2011, 22:16
by CodeWolf
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..:/

Re: WinSock palīdzība

Posted: 04 Oct 2011, 12:11
by snake5
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

Posted: 27 Oct 2011, 23:26
by CodeWolf
Nu ja nemaldos tad tadu funkciju pilda
š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();
	
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ā?

Re: WinSock palīdzība

Posted: 31 Oct 2011, 16:51
by Arrovs
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.

Re: WinSock palīdzība

Posted: 31 Oct 2011, 17:13
by CodeWolf
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
Image

Re: WinSock palīdzība

Posted: 01 Nov 2011, 03:42
by Arrovs
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ē.

Re: WinSock palīdzība

Posted: 01 Nov 2011, 13:18
by Tenjou
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.