Tjek om en server er online, og portforwarded

Tags:    c# server

<< < 12 > >>
Hejsa udviklere, hvordan ville jeg kunne angive en IP og en port til en server, og dermed tjekke om den er online og portforwarded?



14 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 8 karma
Sorter efter stemmer Sorter efter dato
er du sikker på der ikke bliver svaret på den port ligegyldigt hvad?

Du skal nok som tidligere nævnt have telnet kørende samtidigt, der kan du også lave et kald til en specific port, jeg kører server 2008 R2 som arbejdstation, og her skulle jeg under features (programmer i w7) installere telnet, det plejer at være med ud af boxen.

Gider du evt lige prøve at køre dine 4 testscenarier herfra : http://www.yougetsignal.com/tools/open-ports/

/J



Indlæg senest redigeret d. 08.11.2011 07:10 af Bruger #5789
Hvorfor skal der tjekkes om der er portforward på? Skal der ikke bare tjekkes om man kan forbinde til den, eller om den svarer?

Du kan jo telnette på 127.0.0.1:25 til en mailserver. En forbindelse åbnes hvis mailserveren er startet og lytter på 127.0.0.1 og port 25. Har du lavet en port forward, så har du jo fortalt din router at al trafik ud fra 25 skal dirigeres til eksempelvis 26 og hvis det er ind så fra 26 til 25.
Det vil hverken mailserver eller telnet være klar over, med mindre at de er sat op til at tjekke sig selv.

Kan godt være det er helt i hampen, er ikke den store netværkshaj... :)



Jeg har før brugt denne stump kode til at tjekke for om min server kører. Jeg har så lavet det som en webservice der mailer mig selv, hvis den ikke kan downloade headeren:

C# Kode

Omkring portforwarding ved jeg desværre ikke.



Du sender vel bare en forespørgsel til din IP på den bestemte port. Hvis din server svarer er den online og portforwarded.



nogen gange kan du blot telnette til den på den rigtige port



Jeg skal måske være lidt mere spicifik...

Det er en server software kodet i C# (det skal tjekkeren også være, men må godt have referencer til andre steder, f.eks. noget PHP)

Serveren kører et spil på sig.
Jeg vil gerne være istand til at kunne sende en eller anden forespørgsel til serveren, men hvordan?



Jeg tror ikke det kan gøres så simpelt som du gerne vil have det ;). For det første skal du vide om serveren taler TCP eller UDP. Så kan du lave et program der forbinder med enten TCP eller UDP på din IP og port og se om forbindelsen bliver åbnet eller ej.

Dog kan du ikke vide om det rent faktisk er din spil-server eller noget helt andet der svare. For at være 100% sikker bliver du nødt til at undersøge om din server har en form for status/identifikations-forespørgsel du kan sende til den og se om den så svarer det du forventer.



Indlæg senest redigeret d. 06.11.2011 18:26 af Bruger #3275
grunden til at der skal tjekkes om der er portforward på, er at, hvis der ikke er nogen portforward, så er der ingen der kan joine serveren.

I tilfælde af at jeg ikke fik sagt det, er det mig der har kodet server softwaren. Så hvis der er noget jeg skal have kodet ind på den for at den kan svare, kan i bare sige det.

@Jonas
Rart at vide hvordan man kan få det til at fungere, nu skal jeg bare finde ud af hvordan man sætter det op.

@Michael
Hvordan telnetter jeg noget?

@Jokke
Det virker fint, men forbinder stadig, selvom porten ikke er forwarded.
Kunne du finde noget der kun virker hvis porten er forwarded?



Indlæg senest redigeret d. 07.11.2011 15:13 af Bruger #16191
@Lasse >> hvilket af eksemplerne bruger du ? det første skal du nok lige læse kommentarerne til ex:

"I added if(ex.SocketErrorCode == SocketError.ConnectionRefused || ex.SocketErrorCode == SocketError.TimedOut)"


Fold kodeboks ind/udCSharp kode 

Giver mig :

http: True
vpn: False
rdp: True
ftp: True
unknown: False



Indlæg senest redigeret d. 07.11.2011 15:49 af Bruger #5789
<< < 12 > >>
t