Gå til innhold

[løst] Script for å sjekke om UDP-tjeneste er oppe


Anbefalte innlegg

Har et par tjenester på hjemmeserveren min som bruker UDP-porter. Noen som har et flott lite script der jeg kan plotte inn IPer og porter? For TCP-tjenestene brukte jeg:

<?
//Connect to port 80 (HTTP) on ip
$fp = @fsockopen("ip", port, $errno, $errstr);
//If not connected, print out HTTP - Down
if (!$fp) {
print 'HTTP - Down';
//else print out HTTP - Up	
} else {
print 'HTTP - Up';
};
//Close the connection!
fclose ($fp);
?>

Endret av Webmaster Esso
Lenke til kommentar
Videoannonse
Annonse
Når jeg legger til UDP:// foran ipen står det bare at tjenesten er oppe hele tiden :S

Nei, det var jo en bombe. UDP er helt minimalistisk og mer eller mindre «point and shoot», dvs. det er ingenting som sjekker om det faktisk er en tilkobling. Det eneste man gjør er å lage en pakke som man sender av sted. Å sikre seg at den kommer frem ansees som totalt bortkastet bruk av båndbredde. Veldig nyttig til f.eks streaming hvor det er poengløst å motta data som skulle vært der for flere sekunder siden, ikke fult så poengløst hvis man vil sjekke om en tjeneste er tilgjengelig (underforstått: man ønsker et svar på pakken man sender). Du har to muligheter her: 1. Sjekk om protokollen det er snakk om støtter ping-lignende forespørsler, eller 2. Koble deg til noe annet som kan gi status på tjenestene det er snakk om, f.eks ha en HTTP-server kjørende med et script som sjekker status på selve serveren.

Lenke til kommentar

Hva slags tjenester er det?

Finnes kanskje andre måter

 

EDIT:

Warning

 

UDP sockets will sometimes appear to have opened without an error, even if the remote host is unreachable. The error will only become apparent when you read or write data to/from the socket. The reason for this is because UDP is a "connectionless" protocol, which means that the operating system does not try to establish a link for the socket until it actually needs to send or receive data.

 

prøv å les noe fra streamen

eller så hat du jo feof()

Endret av AlecTBM
Lenke til kommentar

Skrekk og gru så unøyaktig det utsagnet er. Du kan fint åpne og skrive via en UDP-«tilkobling» til en IP som ikke er i bruk (mao. uavhengig av portnr. skal resultatet være at ingenting er online) uten at du får en eneste feilmelding eller på noen andre måter veit status på noe som helst. Det er ganske enkelt et produkt av hva UDP er, det er så simpelt og enkelt man kan få det og man står selv ansvarlig for dataintegritet osv. Det som er stikkordet her er skriving OG lesing. Verdt å merke seg at ingen av delene vil gi noen svar hver for seg. Det nytter ikke å lese fra en server all den tid serveren ikke er klar over at du eksisterer, og det nytter ikke å skrive til serveren all den tid man ikke lytter etter et svar. Derimot, hvis man sender et eller annet på tilkoblingen og forventer et svar på det man sender, så finner man ganske kjapt ut status på hva det nå måtte være som lytter på den porten, men ingenting tilknyttet «resource»-en man får ut vil kunne gi noen som helst indikasjon på status, og det inkluderer feof. Som sagt, det er et produkt av hva UDP er.

Endret av Ernie
Lenke til kommentar

Men forventer ikke feof et svar på om det er slutt på sendinga?

Er ikke helt inne på dette, men hvis man bruker en funksjon som sender og vil motta et signal så er man jo godt i gang, og etter det jeg har forstått så er det dette feof gjør

 

Men som sagt så er jeg ikke helt inne på det.

 

Og kort oppsumert om TCP vs UDP:

TCP skal ha svar mens UDP driter i om den får svar

 

Blir som en telefon linje der to personer snakker sammen (TCP) med en FM sending (UDP)

Lenke til kommentar
Det dere sier er altså at jeg uansett ikke får pinget UDP-tjenestene mine?

Er snakk om en Ventrilo server og div. spillservere, bl.a. Counter-Strike og Left 4 Dead.

I bunn og grunn, ja. I og med at det er snakk om spillservere kan det være et aldri så lite problem å finne ut hva protokollen støtter. Hvis den støtter ping-lignende forespørsler så er det mulig, ev. går det også an hvis man veit hvordan man kobler seg til/logger inn på serveren.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...