2016-04-09 60 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

'[「來自因子」打印刷新] 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