无法连接到 StreamSocketListener
Cannot connect to StreamSocketListener
我正在尝试连接到我的 Windows 10 应用程序中的 StreamSocketListener。如果客户端套接字在同一个应用程序中,这是有效的。但是,如果我尝试从另一个应用程序(例如 Putty)进行连接,则它不起作用。几秒钟后腻子说 "Network Error: Connection Refused".
这是我的示例代码:
public sealed partial class MainPage : Page
{
private StreamSocketListener listener;
public MainPage()
{
this.InitializeComponent();
listener = new StreamSocketListener();
listener.ConnectionReceived += Listener_ConnectionReceived;
listener.BindServiceNameAsync("12345").AsTask().Wait();
}
private async void Listener_ConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args)
{
Debug.WriteLine("new connection");
string message = "Hello World!";
using (var dw = new DataWriter(args.Socket.OutputStream))
{
dw.WriteString(message);
await dw.StoreAsync();
dw.DetachStream();
}
}
private async void Button_Click(object sender, RoutedEventArgs e)
{
// Test connection
var serverHost = new HostName("localhost");
var socket = new StreamSocket();
await socket.ConnectAsync(serverHost, "12345");
using (var dr = new DataReader(socket.InputStream))
{
dr.InputStreamOptions = InputStreamOptions.Partial;
await dr.LoadAsync(12);
var input = dr.ReadString(12);
Debug.WriteLine("received: " + input);
}
}
}
在XAML中我添加了一个按钮来测试客户端连接。
在清单中我检查了 "Internet (Client)"、"Internet (Client & Server)" 和 "Private Networks (Client & Server)"。
编辑:我正在尝试在同一台计算机上进行连接。防火墙已停用。
您无法从同一台计算机上的另一个应用程序或进程 运行 连接到 StreamSocketListener
,即使使用 loopback exemption 也是如此。您将需要 运行 客户端在不同的机器上。
只有在启动应用程序之前禁用 windows 防火墙(通过控制面板),然后退出防火墙服务("net stop MpsSvc",来自提升的命令提示符)在应用程序启动后。 Loopbackexemption 不会启用与 UWP 应用程序的连接,只能从 UWP 应用程序连接,至少根据我的经验...
问候
我正在尝试连接到我的 Windows 10 应用程序中的 StreamSocketListener。如果客户端套接字在同一个应用程序中,这是有效的。但是,如果我尝试从另一个应用程序(例如 Putty)进行连接,则它不起作用。几秒钟后腻子说 "Network Error: Connection Refused".
这是我的示例代码:
public sealed partial class MainPage : Page
{
private StreamSocketListener listener;
public MainPage()
{
this.InitializeComponent();
listener = new StreamSocketListener();
listener.ConnectionReceived += Listener_ConnectionReceived;
listener.BindServiceNameAsync("12345").AsTask().Wait();
}
private async void Listener_ConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args)
{
Debug.WriteLine("new connection");
string message = "Hello World!";
using (var dw = new DataWriter(args.Socket.OutputStream))
{
dw.WriteString(message);
await dw.StoreAsync();
dw.DetachStream();
}
}
private async void Button_Click(object sender, RoutedEventArgs e)
{
// Test connection
var serverHost = new HostName("localhost");
var socket = new StreamSocket();
await socket.ConnectAsync(serverHost, "12345");
using (var dr = new DataReader(socket.InputStream))
{
dr.InputStreamOptions = InputStreamOptions.Partial;
await dr.LoadAsync(12);
var input = dr.ReadString(12);
Debug.WriteLine("received: " + input);
}
}
}
在XAML中我添加了一个按钮来测试客户端连接。
在清单中我检查了 "Internet (Client)"、"Internet (Client & Server)" 和 "Private Networks (Client & Server)"。
编辑:我正在尝试在同一台计算机上进行连接。防火墙已停用。
您无法从同一台计算机上的另一个应用程序或进程 运行 连接到 StreamSocketListener
,即使使用 loopback exemption 也是如此。您将需要 运行 客户端在不同的机器上。
只有在启动应用程序之前禁用 windows 防火墙(通过控制面板),然后退出防火墙服务("net stop MpsSvc",来自提升的命令提示符)在应用程序启动后。 Loopbackexemption 不会启用与 UWP 应用程序的连接,只能从 UWP 应用程序连接,至少根据我的经验...
问候