DX・デジタルトランスフォーメーション

AppStoreにて無料公開中! ”システム手帳”で検索! - AppStoreへ iPad版 - iPhone版

ブロックチェーン・暗号技術 | android | iOS | Web | アプリの著作権 | 日本のなりたち | 禅・大乗仏教 | 新しい社会

25年経過してもUNIX Socket は UNIX Socket のままだった

UNIXのソケット通信を初めて実装したとき、心がざわざわするほど感動したものだ。

私がプログラマになって、はじめて通信プログラムを実装したのは、RS-232Cというシリアル回線で接続したHP-UX UNIXワークステーションとPC (MS-DOS)との通信だった。

(インターネットは大学と研究機関が独占し、一般企業や個人はまったく使えなかった時代だ。)

PCから送った文字がUNIXで表示できたときは、涙が出るほどうれしかったことを憶えている。

25年前の出来事だ。

それから25年後、androidスマホとPC (Windows7)との通信を実装する機会があった。

災害情報をPCからスマホにブロードキャストするというもので、どうやって実装しようか考え、UNIXソケットで実装することにした。

プログラミングしながら、25年前に勉強したことがティッシュペーパに水が染み込むように思い出された。

RS-232C は Wifiネットワーク に変わり、UNIX は android に変わり、開発環境は vi から IntelliJ IDEA や Android Studio に変わり、C言語はJavaに変わったけれど、UNIX Socket は UNIX Socket のままだった。

            try {                // サーバへコネクションリクエスト                Socket socket = new Socket();                socket.connect(new InetSocketAddress(IP_SERVER, SOCKET_SERVER), CONNECT_TIMEOUT);            } catch (SocketTimeoutException ex) {                // タイムアウト            } catch (ConnectException ex) {                // Wifi切断等のコネクションエラー            }            try {                OutputStream outputStream = socket.getOutputStream();                // サーバへリクエスト送信                byte[] requestBuffer = "Request String".getBytes("UTF-8");                outputStream.write(requestBuffer, 0, requestBuffer.length);            } catch (Exception ex) {                // Writeエラー            }            // リクエストを受信            while(true) {                String requestString = readSocket(socket, inputStream, outputStream);            }