Verwendung von StreamSocket und TcpClient

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von *alliance.

    Verwendung von StreamSocket und TcpClient

    Hallo,

    Ich suche nach einer einfachen Lösung um eine interne Netzwerk-Kommunikation zu realisieren.
    Folgendes Szenario:

    - Visual Basic Metro App fungiert als Server
    Da ich bei den XAML Apps das TcpListener Object nicht mehr verwenden kann, habe ich auf StreamSocketListener gewechselt:

    VB.NET-Quellcode

    1. Public Async Sub StartServer()
    2. Dim listener As New StreamSocketListener()
    3. AddHandler listener.ConnectionReceived, AddressOf OnConnection
    4. _listener = listener
    5. Try
    6. Await listener.BindServiceNameAsync("3030")
    7. Catch ex As Exception
    8. _listener = Nothing
    9. If SocketError.GetStatus(ex.HResult) = SocketErrorStatus.Unknown Then
    10. Throw
    11. End If
    12. End Try
    13. End Sub

    Das funktioniert auch soweit.

    - Vb.net Console Application soll als Client fungieren
    StreamSockets kann ich hier nun nicht mehr verwenden um eine Verbindung mit dem Server aufzubauen. Desswegen dachte ich, dass eventuell ein klassischer TcpClient ausreicht:

    VB.NET-Quellcode

    1. Dim tcpClient As New System.Net.Sockets.TcpClient()
    2. Try
    3. tcpClient.Connect("127.0.0.1", 3030)
    4. Dim networkStream As NetworkStream = tcpClient.GetStream()
    5. If networkStream.CanWrite And networkStream.CanRead Then
    6. ' Do a simple write.
    7. Dim sendBytes As [Byte]() = Encoding.UTF8.GetBytes("Is anybody there")
    8. networkStream.Write(sendBytes, 0, sendBytes.Length)
    9. ' Read the NetworkStream into a byte buffer.
    10. Dim bytes(tcpClient.ReceiveBufferSize) As Byte
    11. networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
    12. ' Output the data received from the host to the console.
    13. Dim returndata As String = Encoding.UTF8.GetString(bytes)
    14. Console.WriteLine(("Host returned: " + returndata))
    15. Else
    16. If Not networkStream.CanRead Then
    17. Console.WriteLine("cannot not write data to this stream")
    18. tcpClient.Close()
    19. Else
    20. If Not networkStream.CanWrite Then
    21. Console.WriteLine("cannot read data from this stream")
    22. tcpClient.Close()
    23. End If
    24. End If
    25. End If
    26. Catch ex As Exception
    27. End Try


    Bei TcpClient.connect bekomme ich allerdings eine SocketException:
    Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat 127.0.0.1:3030

    Ich weiß nicht, wie ich das sonst realisieren soll.

    * Als Server habe ich einfach den im Microsoft Beispiel-Projekt code.msdn.microsoft.com/window…eamSocket-Sample-8c573931 verwendet.