Ich höre auf Verbindungen über eine Windows Universal App und möchte eine Verbindung zu dieser App über eine Windows-Konsolenanwendung herstellen. Ich habe einige grundlegende Code getan, die ich denke, sollte eine Verbindung herstellen, aber ich bekomme einen Timeout-Fehler von der Konsolenanwendung.Wie stelle ich eine Verbindung zu einer Windows Universal App StreamSocket über eine Konsolenanwendung her?
Die Windows Universal App geht nie sogar in die Verbindung empfangene Funktion.
Der Server (UWP):
public async void SetupServer()
{
try
{
//Create a StreamSocketListener to start listening for TCP connections.
Windows.Networking.Sockets.StreamSocketListener socketListener = new Windows.Networking.Sockets.StreamSocketListener();
//Hook up an event handler to call when connections are received.
socketListener.ConnectionReceived += SocketListener_ConnectionReceived;
//Get Our IP Address that we will host on.
IReadOnlyList<HostName> hosts = NetworkInformation.GetHostNames();
HostName myName = hosts[3];
//Assign our IP Address
ipTextBlock.Text = myName.DisplayName+":1771";
ipTextBlock.Foreground = new SolidColorBrush(Windows.UI.Color.FromArgb(255,0,255,0));
//Start listening for incoming TCP connections on the specified port. You can specify any port that' s not currently in use.
await socketListener.BindEndpointAsync(myName, "1771");
}
catch (Exception e)
{
//Handle exception.
}
}
Der Client (Konsole-Anwendung):
static void Main(string[] args)
{
try
{
byte[] data = new byte[1024];
int sent;
string ip = "192.168.0.5";
int port = 1771;
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(ip), port);
TcpClient client = new TcpClient();
client.Connect(ipep); //**************Stalls HERE************
using (NetworkStream ns = client.GetStream())
{
using (StreamReader sr = new StreamReader(ns))
{
using (StreamWriter sw = new StreamWriter(ns))
{
sw.WriteLine("Hello!");
sw.Flush();
System.Threading.Thread.Sleep(1000);
Console.WriteLine("Response: " + sr.ReadLine());
}
}
}
}
catch (Exception e)
{
}
}
Danke Ich wusste nicht, dass ich sie nicht auf der gleichen Maschine laufen lassen konnte. Warum das? Wird es repariert werden? –
@SethKitchen, das ist kein Fehler, das ist von Entwurf. Dies wird durch die Netzwerkisolierung eingeschränkt. Kann aus Sicherheitsgründen sein. –
Ich lese das "Hinweis Als Teil der Netzwerkisolierung verbietet das System das Herstellen von Socket-Verbindungen (Sockets oder WinSock) zwischen zwei UWP-Anwendungen, die auf demselben Computer entweder über die lokale Loopback-Adresse (127.0.0.0) oder explizit unter Angabe der lokalen IP-Adresse ausgeführt werden "unter https://docs.microsoft.com/en-us/windows/uwp/networking/sockets - aber warum kann ich keine Verbindung zu einer Nicht-UWP-App wie einem lokalen Browser herstellen? Erhalten Sie nicht, was das Sicherheitsproblem wirklich ist, besonders wenn sie nicht erlauben, die IP-Adresse zu benutzen und mindestens einen Firewall-Port zu öffnen –