登さんがインターネット自由協会の電子公告をTELNETで公開されていました。
TELNETであれば簡単に内容を見れるので、誰でも見れることを目指すべき電子公告には適していますね!
登さんがこういうツイートをされていました。
最近の法務局登記官のインターネット・リテラシは、極めて高くなってきたようだ。インターネットにおける Telnet の歴史的重要性を、理解されている。大変に素晴らしいことなのである。 pic.twitter.com/WUN4nC48oZ
— Daiyuu Nobori (登 大遊) (@dnobori) 2023年9月4日
TELNETを使う理由のひとつに次のようなことがあげられています。
HTTP を用いて電子公告を公開していると、外国人の意志ひとつで、突然日本人の電子公告を閲覧者が事 実上閲覧できない状態になってしまうリスクがあります。他方、TELNET プロトコルは、接続先のインターネットサーバーに閲覧者がアクセスするとサーバーから送付されてくる文字を単に画面上に表示するだけの、これ以上に単純化することができない程度に最も基礎的なプロトコルであることから、外国人の意志によっても、決してその挙動が変更されない安定性があります
そう、アクセスすれば送られてくるメッセージを表示するだけです。
これはネットワークプログラムの練習にいいのでは、ということでインターネット自由協会の電子公告を表示するコードを書いてみます。
import java.awt.Font; import java.io.IOException; import java.io.InputStreamReader; import java.net.Socket; import javax.swing.*; void main() throws IOException { var f = new JFrame("インターネット自由協会"); f.setLocation(300, 300); f.setSize(800, 600); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); var t = new JTextArea(); t.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12)); f.add(new JScrollPane(t)); f.setVisible(true); try(var s = new Socket("koukoku.shadan.open.ad.jp", 23); var in = s.getInputStream(); var r = new InputStreamReader(in, "Windows-31J")) { for (char ch; (ch = (char) r.read()) != 0;) { t.append(ch + ""); } } }
ウィンドウを表示したりいろいろとありますが、接続後の処理は受け取った文字を表示するだけになっています。
for (char ch; (ch = (char) r.read()) != 0;) { t.append(ch + ""); }
実行するとこうなります。
インターネット自由協会の電子公告を表示するコード書いた。
— きしだൠ(K1S) (@kis) 2023年9月5日
やはりTCPでつなぐだけで情報が得れると簡単なコードでも十分なのでいいですね! pic.twitter.com/piVsNm9PWO
みんな自分の手元の言語でインターネット自由協会の電子公告を表示するコードを書くといいんじゃなかろうか。
コンソールに出力する場合は次のようになります。
import java.io.IOException; import java.io.InputStreamReader; import java.net.Socket; public class KoukokuSample { public static void main(String[] args) throws IOException { try (var s = new Socket("koukoku.shadan.open.ad.jp", 23); var in = s.getInputStream(); var r = new InputStreamReader(in, "Shift_JIS")) { for (char ch; (ch = (char) r.read()) != 0;) { System.out.print(ch); } } } }
ところでブログのヘッダー画像をStable Diffusion XLで生成するようにしたのだけど、結構いいのが出ててボツにするのが惜しいものが多いので、ここで供養しておきます。