2017-05-30 6 views
1

私はnetcatツールでのUnixでこれを実行します。のnetcatスニペット相当、F#(れるtcpClient)で

$ netcat gh05.geekhosters.com 50001 
{ "id": 0, "method": "server.version", "params": [ "1.9.5", "0.6" ] } 

結果は、執筆時点では、私のこれに返信するサーバです:

{"id": 0, "result": "1.0"} 

素晴らしい!今私はF#で同じことをしたい。しかし、

let rec asyncPrintResponse (stream: System.Net.Sockets.NetworkStream) = 
    async { 
     let response = stream.ReadByte() |> Char.ConvertFromUtf32 
     Console.Write(response) 
     return! asyncPrintResponse stream 
    } 

let TcpClientTest() = 
    let client = new System.Net.Sockets.TcpClient() 
    client.Connect("gh05.geekhosters.com", 50001) 

    let stream = client.GetStream() 
    let bytes = System.Text.Encoding.UTF32.GetBytes("{ \"id\": 0, \"method\": \"server.version\", \"params\": [ \"1.9.5\", \"0.6\" ] }\n"); 

    asyncPrintResponse stream |> Async.Start 
    stream.Write(bytes, 0, bytes.Length) 

    stream.Flush() 
    System.Threading.Thread.Sleep(TimeSpan.FromSeconds(60.0)) 

上記プリント:

は、私はこれを試してみました、私は間違って何をやっている

{"error": "bad JSON"} 

答えて

2

私はUTF8の代わりにUTF32を使用していました。

関連する問題