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); }