ここの更新調査ページ に捕捉されています。 これらのページに関する意見に関しては断りなく公開される場合があります。
なお、このページは見出しレベル1(<h1>)の所のリンクが元ファイルと なっており、そちらへは*基本的*にURLの変更はありません。よって、リンクは そちらにしてください。
マニュアルページを読んでいると、listenすることができるけれども、 incoming connectionをacceptしようとすると、
NGM_KSOCKET_ACCEPT
Currently unimplemented.
とか書いてあってできない事になっていますが、実は実装されています。
ngctlを対話的に使い、
+ mkpeer ksocket foo inet/stream/tcp + msg foo bind inet/0.0.0.0:4567と行う事で、netstat -af inetの結果に
tcp4 0 0 *.4567 *.* CLOSEDと出て来ます。
ここで、ngctlのセッションで
+ msg foo listen 5と打つとnetstat -af inetの結果が
tcp4 0 0 *.4567 *.* LISTENとなります。
ここでngctlのセッションで
+ msg foo acceptと打ち、 telnet localhost 4567でつなぎに行くと
Rec'd response "accept" (3) from "[7]:":
Args: {nodeid= 0x7 addr = {len=16 family=2 }
と出て来ます。ここで別のngctlのセッションを作成し、
+ connect [7]: foo inet/stream/tcpと打ち、telnetセッションから適当に文字を打つと
Rec'd data packet on hook "foo": 0000: 70 6a 0d 0a po..のように出て来ます。
+ write foo 0x54 0x42と言うかんじで、バイト列を渡す事で、サーバ側の返答が可能で、 ここで、telnetのセッションを切るかngctlを終らすか
+disconnect fooとすることで、双方のセッションが切れます。 但し、結構、lock order reversal 等のバグがのこってい るっぽいです。