Programm bleibt beim Reciever hängen. Kann mir jemand helfen?

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von EugenIS.

    Programm bleibt beim Reciever hängen. Kann mir jemand helfen?

    Ich habe zwei Methoden, die eigentlich das selbe machen. Beide bleiben an einer und der selben Stelle stecken. Sieht jemand warum?

    Programm Nr. 1:

    VB.NET-Quellcode

    1. Shared Sub Connect(ByVal serverIP As String, ByVal message As String)
    2. Dim output As String = ""
    3. Try
    4. Dim port = 10045
    5. If Not My.Computer.Network.Ping(serverIP, 100) Then Exit Sub
    6. Dim client As New TcpClient(serverIP, port)
    7. Dim data(255) As [Byte]
    8. data = System.Text.Encoding.ASCII.GetBytes(message)
    9. Dim stream As NetworkStream = client.GetStream()
    10. stream.Write(data, 0, data.Length)
    11. data = New [Byte](255) {}
    12. Dim responseData As String = String.Empty
    13. ' Read the first batch of the TcpServer response bytes.
    14. stream.ReadTimeout = 500
    15. Dim bytes As Int32 = stream.Read(data, 0, data.Length)
    16. responseData = Encoding.ASCII.GetString(data, 0, bytes)
    17. output = "Received: " + responseData
    18. MessageBox.Show(output)
    19. ' Close everything.
    20. stream.Close()
    21. client.Close()
    22. Catch e As ArgumentNullException
    23. output = "ArgumentNullException: " + e.ToString()
    24. MessageBox.Show(output)
    25. Catch e As SocketException
    26. output = "SocketException: " + e.ToString()
    27. MessageBox.Show(output)
    28. End Try
    29. End Sub


    Programm Nr. 2:

    VB.NET-Quellcode

    1. Shared Sub Connect1(ByVal serverIP As String, ByVal message As String)
    2. Dim output As String = ""
    3. Try
    4. Dim port = 10045
    5. If Not My.Computer.Network.Ping(serverIP, 100) Then Exit Sub
    6. Dim tcp As New TcpClient()
    7. tcp.Connect(IPAddress.Parse(serverIP), port)
    8. Dim Writer As New StreamWriter(tcp.GetStream())
    9. Dim SrReciever As New StreamReader(tcp.GetStream())
    10. Dim buffer(256) As Char
    11. Writer.Write(message)
    12. Writer.Flush()
    13. SrReciever.Read(buffer, 0, 255)
    14. 'Writer.Flush()
    15. Catch e As ArgumentNullException
    16. output = "ArgumentNullException: " + e.ToString()
    17. MessageBox.Show(output)
    18. Catch e As SocketException
    19. output = "SocketException: " + e.ToString()
    20. MessageBox.Show(output)
    21. End Try
    22. End Sub
    @EugenIS An welcher Stelle bleiben sie den stecken?
    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!
    @Thias Jou.
    @EugenIS Mach Dir 2 Beispielprogramme nach Microsoft und lass die miteinander reden. Da bekommst Du ein Gefühl dafür.
    Zuerst den Server starten, danach den Client.
    Gib dem Client ein sinnvolles Timeout (der hat ne Property dafür).
    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!