German TCP/IP Verbindung kann nicht aufgebaut werden

OliverA

Expert
Licensed User
Longtime User
heute: 91.15.224.1
Und mit dieser Nummer funktioniert dein Programm aber mit xxxxx.myfritz.net nicht? Und du hast keine Fehlermeldung? Benützt du Debug Mode?
 

MarkusR

Well-Known Member
Licensed User
Longtime User
heute: 91.15.224.1
und die wird auch so als öffentliche IP in deinem Router angezeigt?
 

MarkusR

Well-Known Member
Licensed User
Longtime User
Zeigt doch auch mal deine Router Einstellung zur Port Weiterleitung von Extern auf deine Relai Karte.
 

Sinan Tuzcu

Well-Known Member
Licensed User
Longtime User
oh man, jetzt habe ich etwas entdeckt.
Timeout Einstellung.

ich habe es auf 2000ms eingestellt gehabt. Nun wenn ich die Timeout auf 10000ms einstelle dann baut die Verbindung auf.
Aber auch nur einmal d.h. nach dem Disconnect, kann ich keine Verbindung mehr aufbauen, bis ich die App neu gestartet habe.

Das ist ja alles Merkwürdig hier :)
 

Sinan Tuzcu

Well-Known Member
Licensed User
Longtime User
Warum auch immer, mit der IP 91.15.224.1 ist es schnell aufgebaut, auch nach dem disconnect wird eine Verbindung wieder hergestellt, aber mit der myfritz.net klappt es nur sporadisch und auch da muss mann die Timeout Zeit auf 10s einstellen.

Jetzt frage ich mich, wie funktioniert dann die FritzApp ?
 

pucki

Active Member
Licensed User
Longtime User
Weniger Merkwürdig als es scheint. ;)

Verbindungen besonders Funkverbindungen müssen sich erst mal auf eine gemeinsame Sprache einigen. Das heißt, Welches GB-Band (2.4 o. 5 Ghz) Dann das Protokoll
(unverschlüsselt (was man eh nit machen sollte ) und welche Protokolle man hat. In der Regel ist es wie vor 40 Jahren beim Moden Connect. Man fängt mit den besten an, und wenn der andere Antwortet ist man sich einig. Nun werden Schlüssel ausgetauscht. Leider dauert das Verfahren ZEIT.

Es gibt aber Tricks wie man das verbessern kann. Einfachste Methode. Man schreibt alles zwingend vor. Also 2.4 Ghz mit den Protokoll. Dann klappt es sehr schnell, oder es klappt nie. Ist es richtig eingestellt, und beide Teile können es geht die Verbindung schnell.

Nun das 2 Problem.

Reißt eine verschlüsselte Verbindung ab, so muss sie NEU aufgebaut werden. Was bedeutet der Schlüssel ändert sich. Würde das nicht so sein, wäre eine "man in the Middle" Angriff zu einfach.

Programm technisch macht man da folgendes. Man macht eine "on error (timeout) goto" Anweisung. Dort prüft man ein Timeout. Sendet ein Verbindung trennen Befehl (Falls noch Reste da sind), dann baut man neu auf. Und versucht den Job nochmal. In VB heißt die Anweisung dazu TRY und geht so .

B4X:
' dies ist ein Visual-Basic Code zur Erklärung
Try
   ' hier was machen
    Catch ee As Net.WebException
        ' fehler gefunden
        fehler$ = ee.Message ' fehlermeldung an String übergeben
      ' bei dir bedeutet das, das du die Verbindung neu aufbauen musst bei passenden Fehler
 End Try

Unter B4a weiß ich es nicht. Ist aber mit Sicherheit da. ;)

Mache ich unter VB genau so. Man muss als Coder IMMER davon ausgehen das Verbindungen die das Gerät verlassen, getrennt werden können.

Gruß

Pucki
 

OliverA

Expert
Licensed User
Longtime User
wie funktioniert dann die FritzApp
Timeout ist groesser? FritzApp ist auf den zugriff zu myfritzt.net domains optimiert?
ber mit der myfritz.net klappt es nur sporadisch und auch da muss mann die Timeout Zeit auf 10s einstellen
xxxx.myfritz.net muss erst zu einer IP umgewandelt werden. Das braucht auch mal Zeit. Und wenn der DNS Server lahm ist, dann hilft dass auch nicht.
 

MarkusR

Well-Known Member
Licensed User
Longtime User
cmd
tracert 91.15.224.1
dauert 25 Sekunden von meinem PC zu dieser IP ... hmmm
ohne Namensauflösung -d nur 7 Sekunden
ein ping nur 30 ms mit ip oder name
.. teste ich gleich mal vom handy ...
ping mit ip oder name über Mobile Daten (4G) so 34-58 ms
hab aber einen anderen dns server etc. :) wenn es denn daran liegt
Eigentlich würde ich sagen eine Verbindung dürfte in Null Komma Nix aufgebaut werden.
 
Last edited:

Sinan Tuzcu

Well-Known Member
Licensed User
Longtime User
Hallo Zusammen,

was mir aber jetzt noch aufgefallen ist, die eingestellte Timeoutzeit ändert sich nicht oder irre ich mich?

B4X:
Public Sub ConnectToServer(Host As String, Port As String)
    Log("Trying to connect to: " & Host)
    CloseExistingConnection
    Dim client As Socket
    client.Initialize("client")
    client.Connect(Host, Port, 10000)
    Wait For Client_Connected (Successful As Boolean)
    If Successful Then
        astream.InitializePrefix(client.InputStream, False, client.OutputStream, "astream")
        UpdateState (True)
    Else
        Log("Failed to connect: " & LastException)
    End If
End Sub

obwohl ich da 10s eingestellt habe, ist die Verbindungsaufbau Versuch sehr kurz.
Ich meine die Zeile
Log("Failed to connect: " & LastException)
wird mir in keine 2 Sekunden wiedergegeben.
 

MarkusR

Well-Known Member
Licensed User
Longtime User
versuch mal über einen anderen Weg eine Verbindung aufzubauen das Du da eine gescheite Meldung bekommst. z.B. mit C#, Android Studio etc.
 

MarkusR

Well-Known Member
Licensed User
Longtime User
Ich habe ein selbst gemachtes Tool zum testen einer TCP Verbindung, könnte ich heute Abend mal anwerfen was das sagt.
Darum wäre das nützlich wenn Du die IP/Hostname mit der Port Nummer nochmal nennen würdest.
 
Top