2016-04-09 26 views
1

は、私がlocalhostのポートで接続を受け入れるスーパーシンプル・ソケット・サーバーがあるとします。デュプレックスストリームに書き込む方法を教えてください。

: server-new (port -- stream) f swap <inet4> utf8 <server> accept drop ; 

そして、私は次のようにそれを使用することができます:

接続を待機
IN: scratchpad 1204 server-new 

。端末内:

$ curl localhost:1204 
_ 

サーバが応答するのを待ちます。 server-newは、duplex-streamをスタックに残します。

T{ duplex-stream 
    { in 
     T{ decoder 
      { stream 
       T{ input-port 
        { handle T{ fd { fd 36 } } } 
        { buffer 
         T{ buffer 
          { size 65536 } 
          { ptr ALIEN: 1a44530 } 
         } 
        } 
       } 
      } 
      { code utf8 } 
     } 
    } 
    { out 
     T{ encoder 
      { stream 
       T{ output-port 
        { handle T{ fd { fd 36 } } } 
        { buffer 
         T{ buffer 
          { size 65536 } 
          { ptr ALIEN: 1d42b30 } 
         } 
        } 
       } 
      } 
      { code utf8 } 
     } 
    } 
} 

文字列をクライアントに書きたいと思います。これはどうすればいいですか?

with-streamなどと思われますが、それはストリームオブジェクトを消費し、何も私のcurlクライアントに書き込まれません。

+0

'[" hello from Factor "print flush] with-stream *'がうまくいきます! –

+0

@fedes。聖なる猫、あなたは天才です、ありがとう!それを答えてください:D – cat

+1

答えが十分に見えませんでした;)そして私は川についてあまり知らないので、誰かが物質を与えることができるかどうか見てみましょう! –

答えて

2

それはおそらくどこかにフラッシュを欠けている:

[ "hello from Factor" print flush ] with-stream 

は、ときにも引用終了with-streamは、ストリームを閉じますことに気づきます。開いたままにしたい場合は、代わりにwith-stream*を使用してください。

+0

[シンプルなTCPサーバー](http://codegolf.stackexchange.com/a/77436/46231) – cat

関連する問題