UDP sendet nicht

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    UDP sendet nicht

    Guten Abend.
    Ich habe ein kleines Problem mit UDP.
    Lokal sendet UDP einwandfrei die Pakete, über meinen Server nicht.
    Ich habe es schon mit Firewall ausschalten und Ports freigeben versucht. Leider will er nicht.

    Vielleicht hat jemand von euch eine Idee?

    MfG

    GERFreefighter schrieb:

    über meinen Server nicht.
    Was meinst Du damit genau?
    Ist Server hier ein Programm oder ein eigener Rechner?
    Auf welchem Rechner läuft das Programm?
    Von wo nach wo sollen Datepakete laufen?
    Kannst Du das mal skizzieren?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @GERFreefighter Ist der Router zufällig eine FriteBox?
    Was laufen da für Betriebsysteme drauf?
    Mit Win10 hab ich da auch einige Probleme zwischen PC und Laptop via FritzBox.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    wenn es ja Lokal funktioniert aber über Internet nich dann muss es ja ein Netzwerkproblem sein.
    Hast du geschaut ob der Client auch wirklich frei ist und nicht von einem anderen Programm benutzt wird? Firewall bzw erweiterte Firewall freigeschaltet? das sind auf einem WindowsServer 2 Unterschiedliche Firewall Einstellungen. Siehst du denn ob der Client sich auch wirklich verbindet oder funktioniert der Ausbau schon nich? Versucht sich der Client auch zur richtigen IP/Domain zu verbinden?
    Mein Router ist eine Fritzbox mit der Version 06.83. Ports habe ich freigeschalten.

    Die Firewall habe ich testweise sowohl auf meinem Rechner als auch auf dem Server ausgeschalten. Ports ebenfalls freigegeben. Die richtige IP ist angegeben, da UTicket sich ganz normal verbindet und ich die gleiche Variable mit der IP nutze.

    MfG
    Ich komme weiterhin auf keine Lösung :/

    Hier mal bisschen Code:
    Server

    VB.NET-Quellcode

    1. Imports System.Net.Sockets
    2. Imports System.Text
    3. Imports System.IO
    4. Imports System.Net
    5. Imports System.Threading
    6. Public Class Server
    7. Public Shared Sub Main()
    8. Dim Serverthread As New Thread(AddressOf Starten)
    9. Serverthread.Start()
    10. End Sub
    11. Public Shared Sub Starten()
    12. Try
    13. Dim bteDataAccept() As Byte = Nothing
    14. Dim strdataAccept As String = ""
    15. Dim myEndPoint As New IPEndPoint(IPAddress.Any, 210)
    16. Dim myEndPointSend As New IPEndPoint(IPAddress.Parse("127.0.0.1"), 2100)
    17. Dim myByte() As Byte = Nothing
    18. Dim myUdpClient As UdpClient = New UdpClient(210)
    19. Form1.Schreiben("verbunden")
    20. Do
    21. myByte = myUdpClient.Receive(myEndPoint)
    22. '' strdataAccept = Encoding.ASCII.GetString(myByte)
    23. strdataAccept = Encoding.Unicode.GetString(myByte)
    24. Form1.Schreiben(strdataAccept)
    25. myUdpClient.Send(myByte, myByte.Length, myEndPointSend)
    26. Loop
    27. Catch e As Exception
    28. Console.WriteLine(e.Message)
    29. End Try
    30. End Sub
    31. End Class


    Senden

    VB.NET-Quellcode

    1. Imports System.Net.Sockets
    2. Imports System.Text
    3. Imports System.IO
    4. Imports System.Net
    5. Imports System.Threading
    6. Public Class Tester
    7. Public Shared Sub Main()
    8. Try
    9. Dim dataSend() As Byte
    10. Dim myUdpClient As UdpClient
    11. myUdpClient = New UdpClient("127.0.0.1", 210)
    12. Console.WriteLine("verbunden")
    13. ''dataSend = Encoding.ASCII.GetBytes(SendMessage)
    14. Do
    15. dataSend = Encoding.Unicode.GetBytes("SendMessage")
    16. myUdpClient.Send(dataSend, dataSend.Length)
    17. Console.WriteLine("SendMessage")
    18. Loop
    19. Catch e As Exception
    20. Do
    21. Console.WriteLine(e.Message)
    22. Loop
    23. End Try
    24. End Sub
    25. End Class
    26. Module Module1
    27. Sub Main()
    28. Console.WriteLine("verbinde")
    29. Tester.Main()
    30. End Sub
    31. End Module


    Empfangen

    VB.NET-Quellcode

    1. Imports System.Net.Sockets
    2. Imports System.Text
    3. Imports System.IO
    4. Imports System.Net
    5. Imports System.Threading
    6. Public Class Tester
    7. Public Shared Sub Main()
    8. Try
    9. Dim bteDataAccept() As Byte = Nothing
    10. Dim strdataAccept As String = ""
    11. Dim myEndPoint As New IPEndPoint(IPAddress.Parse("127.0.0.1"), 2100)
    12. Dim myByte() As Byte = Nothing
    13. Dim myUdpClient As UdpClient = New UdpClient(2100)
    14. Console.WriteLine("verbunden")
    15. Do
    16. myByte = myUdpClient.Receive(myEndPoint)
    17. '' strdataAccept = Encoding.ASCII.GetString(myByte)
    18. strdataAccept = Encoding.Unicode.GetString(myByte)
    19. Console.WriteLine(strdataAccept)
    20. Loop
    21. Catch e As Exception
    22. Console.WriteLine(e.Message)
    23. End Try
    24. End Sub
    25. End Class
    26. Module Module1
    27. Sub Main()
    28. Console.WriteLine("verbinde")
    29. Tester.Main()
    30. End Sub
    31. End Module



    Soweit funktioniert das auf lokaler Basis. Sobald es aber über den vServer laufen soll, geht es nicht. Die beiden Ports sind auf dem Server freigegeben (siehe Anhang).

    Habt ihr noch eine Idee?
    Bilder
    • Portfreigabe.png

      2,4 kB, 1.401×27, 112 mal angesehen

    GERFreefighter schrieb:

    VB.NET-Quellcode

    1. Form1.Schreiben("verbunden")
    Was soll denn das? Gugst Du Dialoge: Instanziierung von Forms und Aufruf von Dialogen
    Dann überlegst Du, ob es nicht sinnvoll ist, das ganze in der Form zu machen und ggf. eine Console anzuhängen, um die Ausgaben zu sehen:
    Kommunikation zwischen Console und Form
    Angehängte Console kann nicht direkt geschlossen werden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das ist nur testweise. Ich wollte wissen, ob die vom Sender gesendeten Bytes überhaupt auf dem Server ankommen - Fehlanzeige.
    Mein Vorhaben ist folgendes:
    Ich möchte einen "VOIP-Chat" machen. Die Bytes vom Mikrofon habe ich bereits, es geht nur ums Versenden. Derzeit mache ich es noch über UniversalTicket. Das hat bisher sehr gut funktioniert. Gestern, als wir es mit ca. 12 Leuten getestet haben, ist die Verbindung zum Funkserver (darüber werden nur die Bytes vom Sprechen übertragen und empfangen) immer wieder abgebrochen. Der zweite UTicket-Server (über den werden alle anderen Daten von der Software übertragen) funktioniert wie gewollt. Deshalb war meine Idee, den Funk über UDP zu übertragen. Vielleicht habt ihr noch eine andere Idee?
    MfG

    C#-Quellcode

    1. myUdpClient = New UdpClient("127.0.0.1", 210)
    2. Dim myEndPoint As New IPEndPoint(IPAddress.Parse("127.0.0.1"), 2100)

    Den Port solltest du nochmal kontrollieren.
    Und die IP ist immer Lokalhost. du verbindest dich doch immer zu DEINER lokalen IP? wo steht die ServerIP? Sehe ich da nicht... Lokal sollte das so funktionieren. aber wenn du dich auf einen externen Server verbinden willst musst du auch die rihtige IP eingeben...
    Im Server steht das

    VB.NET-Quellcode

    1. Dim myEndPointSend As New IPEndPoint(IPAddress.Parse("127.0.0.1"), 2100)

    Erklär mir mal warum da eine Lokale IPAdresse drinne steht? was erreicht du mit dieser IP Adresse? soll der Server sich selber eine Nachricht schicken oder wie soll ich das verstehen?
    @GERFreefighter Vielleicht stellst Du zunächst fest, welche IP und welches Post Du überhaupt ansprechen musst.
    Netzwerk-Eigenschaften, IpConfig, Telefon, falls der Surfer wo anders steht.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!