vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Netzwerk Problem 
Autor: HyP3r92
Datum: 24.07.08 20:47

Hallo Leute,

ich habe heute eine sehr merkwürdige frage die ich leider in diesem Fall nur schwer "ergoogeln" kann deshalb stell ich sie auch.

So sieht das Netzwerk aus:

[CODE]Messchreiber 1 Messchreiber 2
IP:192.168.1.2 --------- Switch --------- IP: 192.168.1.3

|
|
|
|
PC IP: 192.168.1.4[/CODE]

Der PC hat wie die Messschreiber eine Statische IP (klar, weil kein DHCP Server vorhanden ist), alle Geräte haben die Subnetzmaske 255.255.255.0 ---> alle im gleichen netz

    Private Function Abruf(ByVal IP As String, ByVal ID As Integer) As String
        Dim con As New System.Net.Sockets.TcpClient(IP, 8000)
        Dim str As Net.Sockets.NetworkStream = con.GetStream
        Dim bytes As New List(Of Byte)
 
        If ID = 1 Then
            bytes.AddRange(SendAndGet(con, str, "013031024d30414e4c4730034a"))
            bytes.Add(13)
            bytes.AddRange(SendAndGet(con, str, "013031024d30414e4c4731034b"))
            bytes.Add(13)
            bytes.AddRange(SendAndGet(con, str, "013031024d30414e4c47320348"))
            bytes.Add(13)
            bytes.AddRange(SendAndGet(con, str, "013031024d304449475f30035b"))
            bytes.Add(13)
            bytes.AddRange(SendAndGet(con, str, "013031024d304449475f31035a"))
            bytes.Add(13)
            bytes.AddRange(SendAndGet(con, str, "013031024d304449475f320359"))
            bytes.Add(13)
        ElseIf ID = 2 Then
            bytes.AddRange(SendAndGet(con, str, "013031024d30414e4c4730034a"))
        End If
 
 
 
        str.Close()
        con.Close()
 
        Return System.Text.Encoding.ASCII.GetString(bytes.ToArray)
    End Function
 
    Private Function SendAndGet(ByRef con As System.Net.Sockets.TcpClient, _
                              ByRef str As Net.Sockets.NetworkStream, _
                              ByVal daten As String) As Byte()
        Dim sendbytes As Byte()
 
        sendbytes = Hex2Byte(daten) 'umwandeln in Bytes
        str.Write(sendbytes, 0, sendbytes.Length) 'Schreiben in den Outputstream
        Do : Loop Until con.Available > 0
        ReDim sendbytes(con.Available - 1) 'SendBytes umformen auf den Input
        str.Read(sendbytes, 0, con.Available) 'Auslesen des Inputstream
        SendAndGet = sendbytes
 
    End Function
 
    Private Function Hex2Byte(ByVal BinString As String) As Byte()
        Dim bytes As New List(Of Byte)
 
        For i As Integer = 0 To BinString.Length - 2 Step 2
            bytes.Add(Byte.Parse(BinString.Substring(i, 2), _
              Globalization.NumberStyles.HexNumber))
        Next
 
        Hex2Byte = bytes.ToArray
    End Function
wenn ich nun die Funktion Abruf einmal mit (192.168.1.2,1) und dann nochmal mit (192.168.1.3,2) werden beide Messschreiber ausgelesen und die empfangen Daten werden dann verarbeitet.

Dies wird alle 2 Minuten gemacht Abfrage 1, Abfrage 2 und dann Verarbeitung. Das merkwürdige ist jetzt:

Der erste Abruf geht ohne Probleme (also 192.168.1.2) aber der 2.te Messchreiber (192.168.1.3) reagiert nach dem 1.ten mal abrufen nicht mehr. Das heißt ich ruf einmal beide ab, wart 2 Minuten und ruf dann wieder beide ab. Nun bleibt das Programm an der Zeile "Dim con As New System.Net.Sockets.TcpClient(IP, 8000)" stehen und bringt die Fehlermeldung das keine Verbindung zu 192.168.1.3 hergestellt werden könnte. Komisch ? Gerade ging’s noch aber beim 2.ten mal funktioniert es nicht mehr. Was mache ich falsch? Wichtig ist auch noch das ich dann den 2.ten Messchreiber nicht mehr anpingen kann.

Das schlimmste ist ja: Wenn ich den Switch durch einen Router tausche und dann den PC auf DHCP stelle funktioniert mein Programm problemlos.

Außerdem zu nennen ist wenn ich anstatt mit meinem Programm, das Programm vom Hersteller benutze kann ich die Geräte so oft wie ich will auslesen... nur hab ich mich entschieden die Geräte selber abzufragen da ich die Daten dann schneller und einfacher anzeigen kann. Da ich die Pakete 1:1 wie das Programm des Herstellers versende kann der Schreiber das nicht merken das es ein anderes Gerät ist.

mfg
HyP3r

Beitrag wurde zuletzt am 24.07.08 um 20:56:10 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Netzwerk Problem919HyP3r9224.07.08 20:47
Re: Netzwerk Problem528Melkor25.07.08 13:12
Re: Netzwerk Problem517HyP3r9225.07.08 13:13
Re: Netzwerk Problem525Melkor25.07.08 13:25
Re: Netzwerk Problem524HyP3r9225.07.08 16:57

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel