Linuxサーバより愛を込めて。自己紹介リンクLinux(Ubuntu)サーバとダーツを愛する中年サラリーマンの日記。Linuxサーバより愛を込めて。>プログラミングバイトオーダとは2016年2月2日バイトオーダってなに?TCPソケットに関して調べているときに出くわしたバイトオーダに関する備忘録。sockaddr_in構造体に値を格納するときに気になることを発見したのがきっかけです。12)するのがリトルエンディアンということ。どんなときに使うのか?マシンのアーキテクチャによってビッグエンディアンを採用しているものとリトルエンディアンを用いるものがあるため、同一ホスト内での運用ならあまり影響ないがネットワーク上でのデータ交換やシステムの移行などの場合で問題が発生する恐れがある。ゆえにTCP/IPネットワークを利用するときはビッグエンディアンを使用すること!と決まっている。(いわゆるネットワークバイトオーダ)変換の必要が発生したときは今回調べる経緯にもなったTCPソケットにおけるsockaddr_in構造体へのデータ格納。そこでも使用されていたChtonl(INADDR_ANY)1htonl(INADDR_ANY)という記述。shortの略(shortは2ビットの整数型)があり、ネットワークバイトオーダ(ビッグエンディアン)に変換するための関数が使用されているということ。※もともとホストがビッグエンディアンであれば何もしない。shortにて必要に応じて「ネットワークバイトオーダをローカルのバイトオーダへ」変換可能。※こちらもホストがビッグエンディアンなら何もしない。まとめソケットに関するコードをいくつか眺めていると必ずと言っていいほどでてきたhtonl関数ですが、バイトオーダなる言葉すら知らなかったため理解するのにとても苦労しました。今まで普通にパソコンを構っていてもメモリ上のデータの配置なんて気にすることありませんでしたし、サーバの設定も手順を追っかけるばかりでそこまで気が周ってませんでした。いい機会だと思って少し真面目に調べた結果データをメモリに格納する際、バイト上位から記録するものと下位から記録するものがある上位からをビッグエンディアン、下位からをリトルエンディアンというマシンのアーキテクチャによって採用されるバイトオーダは異なるネットワーク上には様々なホストが存在するため、ビッグエンディアンを用いるルールになっている。これがネットワークバイトオーダ。知ってる人にとっては常識なんでしょうが、知らない人間にとってはなんのことやらサッパリ...という感じ。ソケット関連で分からないことはたくさんあるので、しばらく悩みは続きそうです。コメントをキャンセルメールアドレスが公開されることはありません。*関連記事Ubuntu14.10にEclipseをインストールプログラムの統合開発環境であるEclipseをUbuntu14.10にインストールしてみます。...プログラムとコメントについて先日他人様のブログを拝見していて「なるほどなぁ・・・」と思った記事がありましたのでご紹介します。...typedefの使い方typdefはC言語で使われる「データ型に別名を与える」ためのキーワード。別名のことはシノニムとかエイリアスとも言う。...Javaの開発環境を考える基本を考えるとJDKをインストール・設定してテキストエディタとコマンドプロンプトで作業することなんでしょうね。World以前、Linuxカーネルを理解するためにC言語を勉強したい!みたいなことを書いたんですが中々思うように進んでいません。commentsロードバイクに関するブログを始めました。自己紹介リンクLinuxサーバより愛を込めて。Linux(Ubuntu)サーバとダーツを愛する中年サラリーマンの日記。Linuxサーバより愛を込めて。