如何写入双工流?
How do I write to a duplex stream?
假设我有一个超级简单的套接字服务器,它接受 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
客户端。
它可能在某处缺少同花顺:
[ "hello from Factor" print flush ] with-stream
另请注意,with-stream
将在引用结束时关闭流。如果您想让它保持打开状态,请改用 with-stream*
。
假设我有一个超级简单的套接字服务器,它接受 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
客户端。
它可能在某处缺少同花顺:
[ "hello from Factor" print flush ] with-stream
另请注意,with-stream
将在引用结束时关闭流。如果您想让它保持打开状态,请改用 with-stream*
。