dial(2)
rcでエコークライアントで,Plan9では,ネットワークをどのようにファイルとして扱っているか書いたけど,プログラミングインタフェースとしてはソケットに代わるどのようなAPIを提供しているのだろうか.
それが,dial(2)である.
int dial(char *addr, char *local, char *dir, int *cfdp)
使い方は至って簡単で,こんな感じである.通常dialの第一引数の文字列は,netmkaddr(2)を使って生成する.
fd = dial("tcp!12.34.56.78!9000", 0, 0, 0); n = write(fd, buf, sizeof(buf)); read(1, buf, n);
一方、サーバ側では、listenソケットのオープンに相当するannounce(2)を使う。listen/acceptは同じ。
int announce(char *addr, char *dir)
使い方は、
afd = announce("tcp!*!9000", adir); lfd = listen(adir, ldir); fd = accept(lfd, ldir); read(fd, buf, sizeof(buf));