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:
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:
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.
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
- Public Async Sub StartServer()
- Dim listener As New StreamSocketListener()
- AddHandler listener.ConnectionReceived, AddressOf OnConnection
- _listener = listener
- Try
- Await listener.BindServiceNameAsync("3030")
- Catch ex As Exception
- _listener = Nothing
- If SocketError.GetStatus(ex.HResult) = SocketErrorStatus.Unknown Then
- Throw
- End If
- End Try
- 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
- Dim tcpClient As New System.Net.Sockets.TcpClient()
- Try
- tcpClient.Connect("127.0.0.1", 3030)
- Dim networkStream As NetworkStream = tcpClient.GetStream()
- If networkStream.CanWrite And networkStream.CanRead Then
- ' Do a simple write.
- Dim sendBytes As [Byte]() = Encoding.UTF8.GetBytes("Is anybody there")
- networkStream.Write(sendBytes, 0, sendBytes.Length)
- ' Read the NetworkStream into a byte buffer.
- Dim bytes(tcpClient.ReceiveBufferSize) As Byte
- networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
- ' Output the data received from the host to the console.
- Dim returndata As String = Encoding.UTF8.GetString(bytes)
- Console.WriteLine(("Host returned: " + returndata))
- Else
- If Not networkStream.CanRead Then
- Console.WriteLine("cannot not write data to this stream")
- tcpClient.Close()
- Else
- If Not networkStream.CanWrite Then
- Console.WriteLine("cannot read data from this stream")
- tcpClient.Close()
- End If
- End If
- End If
- Catch ex As Exception
- 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.