ブックマーク / neocat.hatenablog.com (2)

  • 自分のIPアドレスを得る - Okiraku Programming

    ネットワーク通信を行う場合、プロトコルによっては自分のIPアドレスを相手に通知してあげる必要がある場合がある。 こういうときに、IPアドレスを得るためにgethostname()が返した名前でgethostbyname()を呼ぶ、という方法がとられているのを散見するが、これはダメだ。localhostや自分が設定した名前が帰ってきて、「127.0.0.1」になってしまうことがあるから。 また、特定のホストと通信する場合に、自分の側で使われるIPアドレスを知りたいという場合には使えない(listenするインターフェースを特定する時など)。 自力でルーティングしてたら何のためのネットワークスタックか分からないので、いい方法はないかなあ…と探していたら、見つかったのがこの投稿。 要約すると、ダミーのUDPソケットを作り、それを相手ホストにconnect()し、getsockname()で自分のア

    自分のIPアドレスを得る - Okiraku Programming
    oooooooo
    oooooooo 2014/09/02
    “IPアドレスを得るためにgethostname()が返した名前でgethostbyname()を呼ぶ、という方法がとられているのを散見するが、これはダメだ。localhostや自分が設定した名前が帰ってきて、「127.0.0.1」になってしまうことがあるから。”
  • 12言語polyglotで足し算 - Okiraku Programming

    CodeIQのコーディングパズルで、同一のソースコードで複数の言語処理系で動作するプログラム(いわゆるpolyglot)として、標準入力からの2つの数を加算して出力するものを書くというお題"hybrid A+B problem"が出ていました。12言語(Bash, Brainfuck, C, CLIPS, INTERCAL, Perl, Perl 6, Python, Ruby, Pike, Prolog (swi), Whitespace)で動くものを書いてみましたので晒しておこうと思います。*1 まあ、マイナー言語で埋め込みが簡単なもの*2を多用していて、若干ずるい感じがしますが。。他の方の素晴らしい回答に埋め込んだら、きっと15言語とかにできるんじゃないかなということで晒す価値はあるかなと。 なお動作はideone.comで検証するということで、ideone.comのコンパイラ・イン

    12言語polyglotで足し算 - Okiraku Programming
  • 1