2

Windows.Networking.Sockets API を使用して、Windows ストアで動作する基本的なインターフェイスを取得しようとしています。これまでのところ、私はこれを持っています:

    public async void Test()
    {
        using (var socket = new StreamSocket())
        {
            socket.Control.KeepAlive = false;
            socket.Control.NoDelay = false;
            await socket.ConnectAsync(new HostName("192.168.1.1"), "5555", SocketProtectionLevel.PlainSocket);
            using (var writer = new DataWriter(socket.OutputStream))
            {
                writer.UnicodeEncoding = UnicodeEncoding.Utf8;
                writer.WriteString("yea!");
                //writer.WriteByte(0x50); //this doesn't work either to send raw ASCII
                var t = writer.FlushAsync();
                while (t.Status != AsyncStatus.Completed) ; //just in case?
            }
        }
    }

これまでのところ、接続と切断に成功しているようです。ただし、テキストを受信することはありません。

私のnetcatコマンド(OpenBSDルーターで実行)

$ nc -lv 5555

Test 関数を実行するときに netcat が実行されていない場合、例外がスローされ、すべてが予想どおりにスローされます。ここで何が間違っていますか?

4

1 に答える 1

1

これは私にはまったく意味がありませんが、明らかStoreAsyncDataWriter. 私は Flush がそれを呼び出すべきだと思っていたでしょうが、どうやらそうではないようです。WinRT API に関するもう 1 つの興味深い点です。私の固定コード:

        using (var socket = new StreamSocket())
        {
            socket.Control.KeepAlive = false;
            socket.Control.NoDelay = false;
            await socket.ConnectAsync(new HostName("192.168.1.1"), "5555", SocketProtectionLevel.PlainSocket);
            using (var writer = new DataWriter(socket.OutputStream))
            {
                writer.UnicodeEncoding = UnicodeEncoding.Utf8;
                writer.WriteString("yea!");
                await writer.StoreAsync();
            }
        }
于 2013-03-28T04:55:40.447 に答える