|
|
Idézet Matzi :
barack1:
Igen, tudom ,hogy UDP-vel megy, és hogy a szervernél nyitva kell hagyni a portot, hogy be tudjon találni a kapcsolat. Viszont ugye onnantól, hogy a kliens kezdeményezi a kapcsolatot, akkor már a szerver tud neki válaszolni akkor is, ha az tűzfal mögött van. Gyakorlatilag sajnos ez valamiért nem mindig van így. Viszont ha mondjuk a multicast valamiért másképp kezelődik, akkor ebből gond lehetne.
Mindenesetre köszönöm a segítséget neked is és Omegának is.
Ha azt szeretnéd, hogy a szerver gép multicast üzenetet küldhessen a kliens gépeknek, akkor az összes kliens gépen szerver programot kell futtatni. Vagyis minden kliens gépen meg kell nyitni egy portot, amit egy átlagfelhasználó nem tud megtenni.
Azt korábban elfelejtettem írni, hogy a multicast üzenetet csak szerver program tud fogadni.
|
|
|
barack1:
Igen, tudom ,hogy UDP-vel megy, és hogy a szervernél nyitva kell hagyni a portot, hogy be tudjon találni a kapcsolat. Viszont ugye onnantól, hogy a kliens kezdeményezi a kapcsolatot, akkor már a szerver tud neki válaszolni akkor is, ha az tűzfal mögött van. Gyakorlatilag sajnos ez valamiért nem mindig van így. Viszont ha mondjuk a multicast valamiért másképp kezelődik, akkor ebből gond lehetne.
Mindenesetre köszönöm a segítséget neked is és Omegának is.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
|
|
|
Matzi
Irtad.
"A nyeresége a multicastnak akkor jön be, ha a szolgáltatónál esik szét a csomagom a konkrét unicast csomagokra, amiket megkapnak a userek. "
Mivel az én gépem, és az ADSL szolgáltató között egyetlen hálózati csatorna van, ezért egyszer megy el az adat. Ha az ADSL szolgáltató gépében 100 hálózati csatorna van akkor 99 példányban megy tovább az adat, minden csatornán egyszer megy el kivéve ahonnan jött.
Egyébként a multicast csomag sohasem lesz unicast csomag. A multicast csomag az multicast csomagként ér célba. A válasz az unicast típusú csomag szokott lenni.
|
|
|
#Matzi
Bocs a név elírásért.
Tudtommal a játékok többsége UDP kapcsolattal megy. Én mindig is router mögött voltam, és eddig minden játék ment routeren keresztül default beállítással, ha kliens voltam. De ha szerver akartam lenni, akkor a routeren be kellett álítani a szerver port átirányítást.
Vagyis szerintem a kliens megy router mögött is UDP -n, de a szerver nem.
|
|
|
barack1:
/Elírtad a nevem, kétszer is, autónak nézel talán?  /
UDP kapcsolatnál mindenképp fellép a probléma, hogy a klienseknél át kell törni a routert, ez szerintem nem a multicast/unicast kérdése. (Persze ha nagyon profi vagy a kérdésben, és biztosan tudod, hogy ez a két esetben különbözik, akkor csak szólj.) Szóval az egy másik kör lesz, de persze erre is elfogadok tapasztalatokat, véleményeket, megoldási javaslatokat. A következő kérdésem úgyis kb ez lett volna.
A nyeresége a multicastnak akkor jön be, ha a szolgáltatónál esik szét a csomagom a konkrét unicast csomagokra, amiket megkapnak a userek. Ekkor a szerver kifelé menő sávszélességét jelentősen csökkenti. A csomagok sorrendje, elvesztése UDP-nél amúgy sincs biztosítva, erre egyrészt írtam saját réteget, másrészt ezek tej típusú csomagok, amik elveszhetnek, úgyis csak a legfrissebb számít. Szóval ezzel nincs gond, csak jó lenne tudni, hogy érdemes e szenvedni vele, vagy sem.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
|
|
|
#Matiz
Rájöttem, hogy hol a hiba, ami miatt nem működik az ötleted.
( Az tény, hogy a kliensek többsége routeren keresztül csatlakozik a netre. )
A te módszerednél, az összes kliens gépen bejövő üzenetre várakozó programot kell futtatni. Mivel a boltban vásárolható routerek default értéke az , hogy a kívülröl jövő adatokat blokkolja, ezért a szervertő jövő multicast üzenet nem fog eljutni a kliensig. Csak akkor menne a dolog, ha az összes kliensen is engedéjezik a befele jövő csomagokat, de azt lehetetlen elvárni egy átlagfelhasználótól hogy képes legyen átkonfigurálni egy routert.
|
|
|
#Matiz
Szerintem amit írsz az sávszélesség szempontjából biztos nyereség, hiszen a multicast üzenetek kifele csak egyszer mennek ki az ADSL vonalon, majd a szolgáltató után már több irányba fut. Befele persze az összes válaszüzenet külön jön, de az ADSL befele sokkal gyorsabb.
Vagyis nyilvánvaló, hogy a sávszélesség szempontjából jó az ötlet. Azt nem tudom, hogy egyéb szempontok,( pl. a csomagok hány százaléka érkezik meg, a csomagok sorrendje össze vissza van ) mennyire fontos számodra.
|
|
|
Tegyük fel a gépemről szeretnék, gyatra ADSL-el hosztolni egy játékot, spórolhatok ezzel a módszerrel, remélve azt, hogy a csomag egyszer foglalja a sávszélességemet, nem pedig annyiszor, ahány címzett van?
Azért kérdezem, mert elvben a szolgáltató saját routeréig mindenképpen egy útvonalon kell mennie, mert az az egy vonal van, amin tud közlekedni. Szóval logikus lenne, hogy addig úgy is menjen, és ott váljon szét, amikor már a szolgáltató nem nekem számolja a sávszélességet. Persze el bírom képzelni, hogy nem így működik, csak jó lenne tudni, hogy érdemes e törni magam, vagy maradjak az unicast-nál, és csökkentsem a csomagméretet inkább.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
|
|
|
Ezt nem lehet meghatározni, mert egy dedikált multicasting csatornát nyit a routerekben,
kifelé nem látsz semmit a folyamatból.
Azt pedig hogy a belső hálózat hol választja le, az az adott router útvonal statisztikájának függvénye.
|
|
|
Lehet, hogy félreérthető voltam, de nem hálózati engineket kérdeztem, azt már írtam magamnak. Nem is érdekelnek, ha nem én akarnám írni a motort is, akkor UDK-t használnék, és nem szenvednék semmivel.
A kérdésem az volt, hogy elméletben mit lehet nyerni a multicast-al. Például az egy csomag valahol szétválik sok csomagra, de nem mindegy hogy hol. És UDP, nem TCP.
Mi a gond a multicast-al? Miért nehézkes?
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
|
|
|
A következőket kéne megnézni.
OpenTNL
Enet
Raknet
A többi mind fizetős.
TCP/IP-t nem használunk realtime játékokhoz.
Multicastot sem, nehézkes a kezelése.
Üdv.
|
|
|
Thread resurrect...
Speciel nem C++, hanem C#, de felmerült egy kérdés. UDP alapú csomagok küldése, vannak információk (pl koordináták), amik minden usernek kimennek. Mi lehet spórolni, ha nem egyesével, hanem multicast-al küldi ki az ember a csomagot? Lehet sávszélességet például? A csomag hol válik szét? Például egy gyengébb feltöltési sebességű ADSL-en lógó szerveren segíthet, vagy a netre már külön mennek a csomagok? Tud valaki ilyesmire valami jó praktikát?
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
|
|
|
|
Van valakinek valami anyaga mmo -k protokoljaival kapcsolatban?
|
|
|
[STORY]
írtam egy TCp kliens/szerver progit...itt localhoston frankón is működött,jól elchatelgettem magammal  aztán rádöbbenék,hogy oppá odaadom másnak a klienst,és beszélgetek vele is  elküldém másnak,oppá nem tud csatlakozni hozzám...  aztán sok eszemmel rájövék,hogy köztem és a világháló között szerepel egy router  nah halottam már ilyesmiről,port forwarding,meg ilyesmik...találtam egy jó kis oldalt,ahol szépen lépésről leírták,hogyan is néz ki ez a dolog  először is kell a router típusa  nah,azt én még csak nem is láttam...felmegyék a magasba,megnézni a típusát ,erre látom,vmi piros nagy műanyag cipősdobozszerűség,az oldalán világít vmi led...  no nem gond,2hét aktív msnbombázás után elértem a netszolgáltatót,nyitott nekem portot,közkívánatra,amelyiket akartam...azóta localhoston sem fut a progi
[/STORY]
|
|
|
na most szégyellem magam :$
tényleg minden parancs végére kell a \n  kösz a helpet 
am nincs ciklusban ,egyszerűen csak bejelentkeztet,aztán kilép a progi
|
|
|
Nem értek hozzá, de ha ennyi a kód, akkor mi másnak kéne történnie? Nem kéne ott várnia a send után valaminek a válaszra? Vagy ez az egész egy ciklusban volna?
|
|
|
Hát nem tudom C++ -ban hogy van, de én így csatlakozok POP3-ra (JAVA-ban):
- Socket nyitás mondjuk freemail.hu-ra 110-es porton.
- (Jó esetben) +OK beolvasása
- "USER felhasználónév\n" elküldése (MINDEN PARANCS VÉGÉRE \n kell!!!)
- ha stimmel +OK beolvasása
- "PASS jelszó elküldése\n"
- ha ez is stimmel +OK beolvasása
- parancsok küldése és fogadása
|
|
|
WinSock probléma:
WinSockettel csatlakozok egy POP3 szerverre,és elkezdeném a kontaktot vele,viszont az üdvözlő üzenet beolvasása után megáll a progi...
Kód: //kinullázom a buffer-t,ebbe küldi a server az üzeneteit
memset(buffer,0,sizeof(buffer));
recv(server,buffer,strlen(buffer),0);
cout<<buffer;
//beolvasom a parancsot
cout<<"\nParancs:\n";
cin>>cmd;
//elküldöm a szervernek
send(server,cmd,strlen(cmd),0);
és itt nincs válasz  a parancs elmegy,viszont válasz nem érkezik...ez után a kód után egy kilépés utasítás van,viszont a progi nem lép ki,szal leáll a send utasításnál..  vkinek vmi ötlet?
Szerk.: ugyanez a kód,gcc-vel,socket leírókkal(FILE*) tökéletesen műxik
Ezt a hozzászólást MaximumViolence módosította (2007.10.21 14:07 GMT+1 óra, ---)
|
|
|
thx, azóta meglett ^^
█▓▒░ All system gone, prepare for downcount! ➡ ➎➍➌❶ Offblast! ➔
|
|
|
|
|
Végülis csak egy éves postra reagáltál
|
|
|
|
Idézet kicsy :
Egy szerverhez kapcsolódással nem lehet gond, mert egyszerűen közli a kliens a routerrel hogy hova akar kapcsolódni, az kiépíti a kapcsolatot a szerverrel egy bizonyos porton és azt a portot hozzátársítja a klienshez, vagyis ahhoz a porthoz, amin a kliens kapcsolódott a routerhez. Így amit a kilens/szerver az adott porton küld, azt a router egyszerűen továbbküldi a port "párján".
A probléma az ilyen rendszerekkel az, hogy a router mögött lévő géphez nem lehet kívülről csatlakozni, hiszen az nem látszik kintről.
Ergo ha jól csináltad a szervert, pl. nem csináltál olyasmit, hogy a szerver akar kapcsolódni a klienshez, akkor nem is lehet gond 
Próbálják pl. megpingelni a szervert, ha az megy, akkor a hiba az ön kódjában van 
__________________________
a kódban szerencsére nincs hiba.
aki majd nem tud csatlakozni routeren keresztül, annak a beállításaival van a gond.
_____________________
C++ && OGL
|
|
|
Idézet balogh9 :
van egy kis problémám a routeres felhasználókkal...
szal ők nem tudnak csatlakozni az általam indított szerverhez. olvastam a DZM beállításról ami elvileg forwardolja az összes portot direktbe.
azt szeretném kérdezni azoktól akik értenek a routerekhez, hogy hogyan lehetne megoldani hogy kapcsolódni tudjon a routeres emberke az én szerveremhez. tehát milyen beállításokat kell, hogy csináljon...
összefoglalva: routerrel hogyan tud valaki csatlakozni egy külső szerverhez port és ip megadásával (közvetlenül).
időközben megoldódott a probléma...
_____________________
C++ && OGL
|
|
|
Egy szerverhez kapcsolódással nem lehet gond, mert egyszerűen közli a kliens a routerrel hogy hova akar kapcsolódni, az kiépíti a kapcsolatot a szerverrel egy bizonyos porton és azt a portot hozzátársítja a klienshez, vagyis ahhoz a porthoz, amin a kliens kapcsolódott a routerhez. Így amit a kilens/szerver az adott porton küld, azt a router egyszerűen továbbküldi a port "párján".
A probléma az ilyen rendszerekkel az, hogy a router mögött lévő géphez nem lehet kívülről csatlakozni, hiszen az nem látszik kintről.
Ergo ha jól csináltad a szervert, pl. nem csináltál olyasmit, hogy a szerver akar kapcsolódni a klienshez, akkor nem is lehet gond 
Próbálják pl. megpingelni a szervert, ha az megy, akkor a hiba az ön kódjában van
More info: http://en.wikipedia.org/wiki/Network_address_translation
|
|
|
van egy kis problémám a routeres felhasználókkal...
szal ők nem tudnak csatlakozni az általam indított szerverhez. olvastam a DZM beállításról ami elvileg forwardolja az összes portot direktbe.
azt szeretném kérdezni azoktól akik értenek a routerekhez, hogy hogyan lehetne megoldani hogy kapcsolódni tudjon a routeres emberke az én szerveremhez. tehát milyen beállításokat kell, hogy csináljon...
összefoglalva: routerrel hogyan tud valaki csatlakozni egy külső szerverhez port és ip megadásával (közvetlenül).
_____________________
C++ && OGL
|
|
|
A legjobb socketes tutorial (alapvetően unix/linux-ra, de nekem win alatt is ment minden gcc alapú fordítóval. msvcpp-vel és borlanddal nem próbáltam ki, de azzal is működnie kell)
[url="http://people.inf.elte.hu/triasz/progi/bgnet.html">Beej útmutatója a hálózati programozáshoz[/url]
Toma
"Ez nem bug, hanem feature!"
|
|
|
DirectX összes SDK-ja, Platform SDK, WinXp SP2 SDK, OpenGL meg még egy csomó minden (pl. prog könyvek) letölthető ingyenesen innen:
[url=http://dev.icarusindie.com:2004/index.php>http://dev.icarusindie.com:2004/index.php[/url]
[url=http://tsg.uw.hu/index.php>Turul Software Group[/url]
|
|
|
k, nem baj
netspirit.srv.hu
|
|
|
Idézet Lazarus írta:
Ok, köszi 
netspirit.srv.hu
Sorry de csak délutánra lesz fent.
|
|
|
Ok, köszi
netspirit.srv.hu
|
|
|
Idézet Lazarus írta:
(TheProGamer írta:
(Lazarus írta:
a DX9 SDKt honnan lehet leszedni?
netspirit.srv.hu)Hát ha legális Win-ed van akkor a Microsoft.com-ról. Ha nem akkor nézz körül a Google-al. Ha nem találsz semmit szólj akkor feltöltöm a tárhelyemre.
(Módosította TheProGamer 2005.08.30. 21:05-kor))szólok :/
Csak Updateket találok mindenhol
netspirit.srv.hu
Ok. Már tömörítem. Utána tolom fel. Olyan éjfélre talán fent lesz.
|
|
|
Idézet TheProGamer írta:
(Lazarus írta:
a DX9 SDKt honnan lehet leszedni?
netspirit.srv.hu)Hát ha legális Win-ed van akkor a Microsoft.com-ról. Ha nem akkor nézz körül a Google-al. Ha nem találsz semmit szólj akkor feltöltöm a tárhelyemre.
(Módosította TheProGamer 2005.08.30. 21:05-kor)
szólok :/
Csak Updateket találok mindenhol
netspirit.srv.hu
|
|
|
Idézet Lazarus írta:
a DX9 SDKt honnan lehet leszedni?
netspirit.srv.hu
Hát ha legális Win-ed van akkor a Microsoft.com-ról. Ha nem akkor nézz körül a Google-al. Ha nem találsz semmit szólj akkor feltöltöm a tárhelyemre.
(Módosította TheProGamer 2005.08.30. 21:05-kor)
|
|
|
a DX9 SDKt honnan lehet leszedni?
netspirit.srv.hu
|
|
|
Küldtök nekem tutorialokat plz? 
Érdekel minden ami a késöbbiekben is használható (Nagyobb multis játékok)
lazarus(kukac)cia.hu
netspirit.srv.hu
|
|
|
Hát lefordítani az MSDN-t azért igen durva lenne. Olyan 3 év alatt egy csoport tolmács talán megbírkózna a feladattal.
Mondjuk úgy tényleg nehéz megérteni ha az ember nincs otthon az angol nyelvben mert tele van olyan szavakkal/kifejezésekkel amikhez mélyebb angol tudás kell. Nekem szerencsére ezzel nincs bajom (középfoku angolnyelvvizsga).
|
|
|
A DirectPlay-t legjobban a DX9.0 SDK-ból lehet megtanulni. Én is onnan tanultam meg halál lazán.
|
|
|
Idézet bmateusz írta:
Én VB6 alatt WinSockot programoztam. Előnye hogy nagyon egyszerű, és mégis működik. Ha esetleg valaki szeretne tutorialt, akkor írok, csak hát jön a suli...
Engem is érdekelne a DirectPlay, találtam is egy jó kis leírást. Sajna már enm emlékszem a netcímre, de megvan Word formátumban, elküldhetem bárkinek, akinek kell (csak add meg a Mail/MSN címed)! Hátránya, hogy full angol, de könnyen érthető  .
(Módosította BebyVegeta 2005.08.30. 16:51-kor)
|
|
|
Én VB6 alatt WinSockot programoztam. Előnye hogy nagyon egyszerű, és mégis működik. Ha esetleg valaki szeretne tutorialt, akkor írok, csak hát jön a suli...
|
|
|
Én viszont a socketek használatát részesítem előnyben. Nem kell hardver szinten programozni egyáltalán. Kis tanulmányozás után megérthető a működése, mivel elég egyszerű. Anno én is egy chat progi írásával kezdtem a tanulmányozásukat.  Tutorialom nekem sincs, viszont a gametutorials.com-ról szedtem le erősen kommentezett példaprogikat. Azok tutorialnak tekinthetők. Ha érdekel mailben elküldhetem őket.
És előnye a socketek használatának, hogy a linuxos socketek is hasonlóak a window$os socketekhez...
Cs.Ádám
|
|
|
A HRESULT csak arra jó hogy ha a függvény hibával lép ki akkor konkrétan tudd mi a hiba és ne kelljen nyomozni.
|
|
|
Idézet Lazarus írta:
Kösz 
első kérdés:
itt mi a visszatérési érték tárolója?
HRESULT GetAddress( WCHAR *wszAddress,
PDWORD pdwAddressLength,
USHORT *psPort
);
GetAddress = S_OK ?
netspirit.srv.hu
wszAddress
[out] Pointer to a buffer to receive the host name. This parameter can be NULL to retrieve the required size.
pdwAddressLength
[in, out] Size, in characters, of the buffer specified in wszAddress, including the terminating NULL character. On success, this parameter contains the number of characters, including the terminating NULL character, written to the specified buffer. On failure, this parameter contains the number of characters, including the terminating NULL character, required to retrieve the host name.
psPort
[out] Pointer to a USHORT to contain the port specified in this local address.
|
|
|
Kösz
első kérdés:
itt mi a visszatérési érték tárolója?
HRESULT GetAddress( WCHAR *wszAddress,
PDWORD pdwAddressLength,
USHORT *psPort
);
GetAddress = S_OK ?
netspirit.srv.hu
|
|
|
Idézet Lazarus írta:
Hi!
Nem sűrűn látok olyan tutorialokat amik a hálózati programozást oktatnák 
Gondolom első lépésként egy chat program megírása nem lenne nagyon bonyolult feladat... tud valaki olyan oldalt ahol elég érthetően, szájbarágósan elmagyaráznak mindent?
netspirit.srv.hu
Én a hálózat programozással úgy vok hogy DirectPlay nélkül soha. A DP-vel tök könnyen lehet ezt megoldani, nem kell a hardverközeli résszel foglalkozni. Hátránya viszont hogy csak Win alatt megy és VC++ kell a programozásához (lehet hogy jó a DevC++ is nem tudom). A DPről találsz leírást a DX SDK-k ban és a msdn.microsoft.com on is (bár az elég xar).
|
|
|
Hi!
Nem sűrűn látok olyan tutorialokat amik a hálózati programozást oktatnák
Gondolom első lépésként egy chat program megírása nem lenne nagyon bonyolult feladat... tud valaki olyan oldalt ahol elég érthetően, szájbarágósan elmagyaráznak mindent?
netspirit.srv.hu
|
|
|
Legújabb project:
Smashed Potatoes
Legutóbb frissített project:
Treasure Measure
Friss kép a galériából:
|