Windows10アプリでStreamSocketListenerに接続しようとしています。これは、クライアントソケットが同じアプリ内にある場合に機能します。しかし、別のアプリケーション(Puttyなど)から接続しようとすると、機能しません。数秒後、パテは「ネットワークエラー:接続が拒否されました」と言います。
これが私のサンプルコードです:
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で、クライアント接続をテストするためのボタンを追加しました。
マニフェストで、「インターネット(クライアント)」、「インターネット(クライアントとサーバー)」、「プライベートネットワーク(クライアントとサーバー)」をチェックしました。
編集:私は同じコンピューターに接続しようとしています。ファイアウォールが無効になっています。
ループバックの免除がStreamSocketListener
あっても、同じコンピューターで実行されている別のアプリまたはプロセスからに接続することはできません。別のマシンでクライアントを実行する必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加