1

假设我有一个超级简单的套接字服务器,它接受一个端口上的连接localhost

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

我可以像这样使用它:

IN: scratchpad 1204 server-new 

等待连接。在终端中:

$ curl localhost:1204
_ 

然后等待服务器回复。在堆栈上server-new留下 a 。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客户端。

4

1 回答 1

2

它可能在某处缺少冲洗:

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

另请注意,with-stream报价结束时将关闭流。如果您想让它保持打开状态,请with-stream*改用。

于 2016-04-09T01:34:39.563 回答