[VB 2010] Serverstatus ist immer Online

08/08/2011 01:55 .Nexitis#1
Hi ehm um den Serverstatus zu ermitteln habe ich das stehen :


Code:
Timer1.Enabled = True
        Try
            My.Computer.Network.Ping("----------")
            PictureBox8.Visible = True
            PictureBox3.Visible = False
        Catch es As Exception
            PictureBox3.Visible = True
            PictureBox8.Visible = False
        End Try
        Try
            My.Computer.Network.Ping("--------")
            PictureBox7.Visible = True
            PictureBox6.Visible = False
        Catch es As Exception
            PictureBox6.Visible = True
            PictureBox7.Visible = False
            Me.MaximizeBox = False
        End Try

Nur ist er immer auf Online ich frag mich warum eigentlich ist es doch Sauber oder nicht? den Port hab ich auch überprüft der ist richtig. Ich komm nicht drauf was das Problem ist
08/08/2011 02:30 .SkyneT.#2
Also da My.Computer.Network.Ping einen booleanischen wert zurück gibt würde
ich das ganz einfach mit If lösen.

Code:
        If My.Computer.Network.Ping("111.111.11", 1000) = True Then
            MessageBox.Show("Server Online")
        ElseIf My.Computer.Network.Ping("111.111.11", 1000) = False Then
            MessageBox.Show("Server Offline")
        End If
Das sollte dir Server Offline zurückgeben. (Nach spätestens 1 sekunde)

Dann fügst du z.b [Only registered and activated users can see links. Click Here To Register...] ein, und es wird dir Server Online zurückgeben. (Auser google wär grad off ;) )

Und das man den Port mit einem "," dazuschreibt wär mir auch neu ?
Die IP Alleine zeigt doch schon die verfügbarkeit des Servers ?
Du hast ja nicht vor offene Ports zu scannen o.Ä

Korrigiert mich wenn der obere Teil hier falsch sein sollte.

Dazu noch hast du kein Timeout angegeben, in diesem Code "1000".

Btw:
Bei mir wird dein Rappelz Server als Online angezeigt.

MfG SkyneT
08/08/2011 11:42 Kraizy​#3
Wenn du dir mal die Beschreibung des benötigten Parameters von Network.Ping() anschauen würdest, würdest du wissen, dass man nur die IP angeben muss..
Dein Aufruf:
PHP Code:
My.Computer.Network.Ping("46.4.64.76, 1433"
ist also völliger Mist und es kann nur zu einem Fehler führen. Da du es aber in einen Try-Block gepackt hast, wird immer folgendes passieren:
PHP Code:
PictureBox3.Visible True
PictureBox8
.Visible False 
egal ob der Server online oder offline ist.
Jedoch brauchst du den Try-Block nicht und es würde eine simple If-Abfrage wie es bereits SkyneT gesagt hat ausreichen:
PHP Code:
If My.Computer.Network.Ping("46.4.64.76"Then //den TimeOut-Parameter musst du nicht unbedingt angeben, dieser ist standardmäßg auf 500 gestellt
   //online
Else
   
//offline
End If 
08/08/2011 12:47 .Nexitis#4
PHP Code:
If My.Computer.Network.Ping("--------"Then
            PictureBox8
.Visible True
            PictureBox3
.Visible False
        
Else
            
PictureBox3.Visible True
            PictureBox8
.Visible False
        End 
If

        If 
My.Computer.Network.Ping("--------"Then
            PictureBox7
.Visible True
            PictureBox6
.Visible False
        
Else
            
PictureBox6.Visible True
            PictureBox7
.Visible False
        End 
If 
Das hab ich stehen jedoch seh ich jetza garkein Bild mehr und ehm die ip ist vom rootserver da hab ich de port noch angegeben für den game/login server
08/08/2011 13:23 .SkyneT.#5
Quote:
Originally Posted by bigdady256314 View Post
PHP Code:
If My.Computer.Network.Ping("46.4.64.76, 1433"Then
            PictureBox8
.Visible True
            PictureBox3
.Visible False
        
Else
            
PictureBox3.Visible True
            PictureBox8
.Visible False
        End 
If

        If 
My.Computer.Network.Ping("46.4.64.76, 4514"Then
            PictureBox7
.Visible True
            PictureBox6
.Visible False
        
Else
            
PictureBox6.Visible True
            PictureBox7
.Visible False
        End 
If 
Das hab ich stehen jedoch seh ich jetza garkein Bild mehr und ehm die ip ist vom rootserver da hab ich de port noch angegeben für den game/login server
Aber es ist nicht möglich den Port bei Network.Ping() anzugeben!
Das wird nie funktionieren.
Es wird nur so funktionieren:
My.Computer.Network.Ping("46.4.64.76")

@xKraizy
Seit wann kann man bei der If Anfrage so etwas schreiben.
Code:
If My.Computer.Network.Ping("46.4.64.76") Then
Eher so oder ?
Code:
If My.Computer.Network.Ping("46.4.64.76") = True Then
Ich persönlich finde den Timeout von 500 manchmal zu wenig,
also das der Server fälschlicherweise als Offline angezeigt wird.

MfG SkyneT
08/08/2011 13:42 .Nexitis#6
Wie mus ich es den dann schreiben eine andere alternative kenn ich nicht
08/08/2011 13:57 .SkyneT.#7
Quote:
Originally Posted by bigdady256314 View Post
Wie mus ich es den dann schreiben eine andere alternative kenn ich nicht
Gar nicht weil es unter
Network.Ping()
keine Parameter für den Port gibt.

Das was du hier anscheinend haben willst ist ein Portscanner.

MfG SkyneT
08/08/2011 14:00 .Nexitis#8
Ich will einen Serverstatus haben nur ist die IP vom root 46.4.64.76 und um halt herauszufinden ob der z.B auth server on ist häng ich den port hinten dran aber jetzt versteh ich nicht was ich machen muss um das zu hinzubekommen
08/08/2011 15:07 Kraizy​#9
Quote:
@xKraizy
Seit wann kann man bei der If Anfrage so etwas schreiben.
Es macht keinen Unterschied, ob du
Code:
If My.Computer.Network.Ping("46.4.64.76") Then
oder
Code:
If My.Computer.Network.Ping("46.4.64.76") = True Then
benutzt. Beides ist gleich, probiers aus ;)
Genauso mit False:
Statt
Code:
If My.Computer.Network.Ping("46.4.64.76") = False Then
kann man
Code:
If Not My.Computer.Network.Ping("46.4.64.76") Then
benutzen.

Edit:
@Problem:
Benutz anstatt Network.Ping einen TCPClient und versuch dich mit diesem zu verbinden, wenns klappt, dann ist der Server online, ansonsten nicht:
PHP Code:
Dim client As New System.Net.Sockets.TCPClient
Try
   
client.Connect("46.4.64.76"1433)
   
MsgBox("Online")
Catch 
ex As Exception
   MsgBox
("Offline)
End Try 
08/08/2011 15:15 .Nexitis#10
Ich schnall nichts mehr wie mach ich nun einen funktionierenden serverstatus ? wenn meine version nicht funktioniert?
08/08/2011 15:32 Kraizy​#11
Was genau brauchst du denn noch?? Du hast doch von mir einen C&P-Code bekommen, mit dem TCPClient, sorry lern die Grundlagen...
08/08/2011 15:41 .Nexitis#12
Edit: Also dein Post kam ja 1 min nach meinem also jetzt funzt der login Server ich habs nur mit picturebox gemacht undzwar so :

PHP Code:
Dim client As New System.Net.Sockets.TcpClient

        
Try
            
client.Connect("---------------)
            PictureBox3.Visible = True
            PictureBox8.Visible = False
        Catch ex As Exception
            PictureBox3.Visible = False
            PictureBox8.Visible = True
        End Try 
Das geht aber ich will ja beide in einer Form haben unzwar hab ich jetzt das stehen (insgesammt)

PHP Code:
 Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load 
        Dim client 
As New System.Net.Sockets.TcpClient

        
Try
            
client.Connect(----------------)
            
PictureBox3.Visible True
            PictureBox8
.Visible False
        
Catch ex As Exception
            PictureBox3
.Visible False
            PictureBox8
.Visible True
        End 
Try

        Try
            
client.Connect(-----------------)
            
PictureBox6.Visible True
            PictureBox7
.Visible False
        
Catch ex As Exception
            PictureBox7
.Visible False
            PictureBox6
.Visible True
        End 
Try
        
Timer1.Enabled True
        Me
.MaximizeBox False
    End Sub 
nur wird der 2te nich angezeigt ich probier nochwas vllt klapts dann

Ok funzt ich hatte
PHP Code:
Try
            
client.Connect(----------------)
            
PictureBox6.Visible True
            PictureBox7
.Visible False
        
Catch ex As Exception
            PictureBox7
.Visible False
            PictureBox6
.Visible Flase
        End 
Try 
dann einfach PictureBox.6visible = true gemacht und es funzt Danke


Nur wenn ich das gleiche beim timer eingebe aktualisierts sich nicht automatisch ich arbeite dran wenns ich nich weiter komm post ich es hier
08/08/2011 17:07 .SkyneT.#13
@xKraizy
Hmm das mit If Not wusste ich gar nicht ;)
Und du hast nen kleinen Fehler gemacht...

Quote:
Dim client As New System.Net.Sockets.TCPClient
Try
client.Connect("46.4.64.76", 1433)
MsgBox("Online")
Catch ex As Exception
MsgBox("Offline") ' Anführungszeichen vergessen ;)
End Try
Sonst ist das wirklich nur ein Copy & Paste Code.
Hier kann man eigentlich nix mehr falsch machen.
Aber trotzdem nochmal für dich...
(Das dein Code den du gepostet hast funktioniert bezweifle ich irgendwie ;) )

Code:
            client.Connect("46.4.64.76", 4514)
            PictureBox6.Visible = True
            PictureBox7.Visible = False
        Catch ex As Exception
            PictureBox7.Visible = False
            PictureBox6.Visible = True
Hier: Entweder PictureBox6 oder Picture Box 6 ??? da kann sich dann ja gar nix ändern ;)
Eher so oder ?

Code:
            
client.Connect("46.4.64.76", 4514)
            PictureBox6.Visible = True
            PictureBox7.Visible = False
        Catch ex As Exception
            PictureBox7.Visible = True
            PictureBox6.Visible = False
Hier entweder Picture Box 6 oder Picture Box 7
Der Code stimmt dann eigentlich soweit.

MfG SkyneT
08/08/2011 17:25 .Nexitis#14
Danke ^^ und kurz neben bei ich frage mich warum jetztz dieser error kommt ich machs bei anderenpictureboxes auch so auser bei der ist der error

[Only registered and activated users can see links. Click Here To Register...]
08/08/2011 17:35 .SkyneT.#15
Lol...
Bei mir geht genau der selbe Code ohne das der Compiler rumheult....

Start mal Visual Studio neu oder so ;)