[Delphi] Connection via internet met DirectPlay van DelphiX

Pagina: 1
Acties:

  • IntToStr
  • Registratie: December 2003
  • Nu online
Ik ben eens gaan experimenteren met directplay in delphi.

Ik heb een chat applicatie gemaakt hiermee die gewoon werkt als je het programma 2x start op dezelfde pc of op een lokaal netwerk.
Als je probeert om een chat te joinen van iemand anders op internet die ik had gevraagd om wat te testen kan hij de host niet vinden.
Ook niet als je het ip invult van diegene.

Het werkt dus alleen lokaal, maar ik wil dat het over internet ook werkt.

Iemand een idee hoe ik dit voor elkaar kan krijgen?
Op dit moment gaat het alleen om een chat applicatie maar dit is slechts een test om er later een spel van te maken dat mensen via internet kunnen spelen en daar wil ik in ieder geval directplay bij gebruiken.

Is dit alleen mogelijk als ik op een website een progje laat draaien dat als host werkt of is dit misschien ook mogeijk met behulp van een mysql database die de sessions bijhoudt of zo?

Ideeen zijn welkom!
En indien mogelijk misschien een voorbeeld van de opzet van de code :)

Verwijderd

Als het lokaal wel werkt ligt het waarschijnlijk aan het niet kunnen maken van de verbinding,
wat heb je zelf al uitgesloten dat er fout gaat:
wordt de gebruikte poort ergens geblokt (firewall)? Zit er een router/proxy tussen?
kijk je alleen in het lokale subnet? welk protocol gebruik je...

In principe kan alles wat op het locale subnet kan ook via het internet, maar denk dan wel exta aan veiligheid....

  • IntToStr
  • Registratie: December 2003
  • Nu online
Er zit wel een modem tussen dat als router gebruikt wordt bij mij.
Ik had alle firewallachtige dingen al uitgezet.
Het gaat om een TCP/IP verbinding die door DirectPlay zelf wordt gemaakt dus aan poorten hoef ik niets in te stellen.

Directplay maakt eigenlijk automatisch lokaal een host aan maar dat wil ik dus niet.

Het zou best kunnen dat het komt door dat modem dat er tussenhangt.

Iemand een idee hoe ik dat kan omzeilen als dat het probleem was?

  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 00:18

Delphi32

Heading for the gates of Eden

DirectPlay met een router ertussen heb ik iig nog nooit aan de praat gekregen. Ook de maker van een DirectPlay-enabled progje (voor FS2002) kwam er niet uit en weet dat aan DirectPlay zelf aangezien hij er (net als jij) niets speciaals voor hoefde in te stellen. Ik geef je dus weinig hoop.

  • martijn_brinkers
  • Registratie: November 2001
  • Laatst online: 31-10-2025
What's New in DirectPlay
New Features for DirectPlay 8.1


Writing network games that traverse network address translators (NATs), firewalls, and other Internet connection sharing (ICS) methods can be difficult, particularly for non-guaranteed (UDP) traffic. Because DirectPlay 8.1 has been developed with these issues in mind, it will support NAT solutions where possible. The DirectPlay 8 TCP/IP service provider uses a single, developer-selectable UDP port for game data, making it possible to configure firewalls and NATs appropriately. Additionally, DirectPlay makes use of UDP so that, for client/server games, clients behind some NATs will be able to connect to games without additional configuration.
http://msdn.microsoft.com...vb/Play/WhatIsNewInDp.asp

Als je een router hebt zal je in iedergeval eea moeten instellen. Omdat directplay gebruik maakt van UDP kan het lastig zijn om je router zo in te stellen dat alles op de juiste plek komt. Zo te lezen gebruikt DirectPlay 8 maar 1 vaste in te stellen UDP poort, in tegenstelling tot DirectPlay < 8 waarbij willekeurige poorten werden gebruikt, zodat het instellen van je firewall/router nog te doen is. Bij oudere spellen moet je gaan werken met triggers enzo maar dat is geen pretje.

  • ArieProductions
  • Registratie: Januari 2002
  • Laatst online: 27-11-2024
Op deze site
http://www.zoksoftware.de

staat ergens onder de oude dingen een uitwerking van Directplay in Delphi. Deze heb ik aan de praat gekregen voor de buitenwereld, door in m'n router poort 80 te forwarden naar de computer waar programma op draait, forwarding voor zowel udp als tcp. (Een van deze twee zou overigens genoeg moeten zijn)

Hierdoor kon ik ook buiten mijn eigen netwerk bij het programma komen.

Let erop dat je als host niet je localhost gebruikt, dan doet ie het slechts alleen op je eigen computer. Dus gewoon ip-adres invullen

"Quidquid latine dictum sit, altum videtur" (Whatever is said in Latin sounds profound)


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 22-04 10:23

Sponge

Serious Game Developer

Welke directplay, is cruciaal hier. Zelf heb ik de nodige ellende meegemaakt met DirectPlay. Als je zelf geen poort instelt, gebruikt DirectX zelf een port range (google: DirectPlay Age of Empire ports, oid.. dan krijg je vast die lange micrisoft lijst te zien met DP7/DP8 uitleg)

Overigens heb ik met @Home ook een lekker probleem gehad met directplay8.0. Als je verbindt, of iemand naar je laat verbinden, worden er packets ONDER 7 bytes gebruikt. Bij een bepaalt type router voor "middelgrote steden" is er een fout waar packets ONDER 7 bytes gewoon in het niets verdwijnen. @Home heeft dit bevestigt, en ook ontkend, er is dus iets vaag mee.

Als beide PC's DirectPlay8.1 gebruiken (dus DirectX8.1 of DX9 gebruiken) dan moet het wel werken. Dit heeft trouwens weken geduurt om uit te vinden, vorig jaar :(

  • ArieProductions
  • Registratie: Januari 2002
  • Laatst online: 27-11-2024
Sponge schreef op 24 december 2003 @ 08:34:

Als beide PC's DirectPlay8.1 gebruiken (dus DirectX8.1 of DX9 gebruiken) dan moet het wel werken. Dit heeft trouwens weken geduurt om uit te vinden, vorig jaar :(
Dat zou goed kunnen, de 4 pc's waarop ik getest heb, beschikken minimaal over Directx8.1.

"Quidquid latine dictum sit, altum videtur" (Whatever is said in Latin sounds profound)

Pagina: 1