今このWEBページを表示しているということは、あなたのPCはネットワークへ繋がっているということですね。

さて、ネットワークの世界には様々なコンピュータが接続されていますが、なぜどのコンピュータでWEBページを見ても同じページが表示されるのでしょうか? なぜどのコンピュータでファイルをダウンロードしても同じデータを手に入れられるのでしょうか?
例えばIntelのCPUかARMのCPUかでバイト列の解釈方法は違います。
(バイト列とは、前回のビット列を1段階拡張させただけの概念です)


実はネットワークへアップロードされているデータはあるルールに基づいているのです。
そのルールのことをネットワークバイトオーダーと呼びます。
ネットワークバイトオーダーへの変換は簡単です。まともなAPIやライブラリであれば、変換用の関数が用意されているはずです。これから学習するWinSockやBSDSocketにももちろん用意されています。

2バイト以上のデータを転送する際には、ネットワークバイトオーダーへ変換しなければなりません。
この2バイトが肝なのですが、
文字は2バイトではありません。char型なので1バイトです。
文字列も2バイトではありません。C言語に文字列は存在せず、文字の集合体なのでした。なのでネットワークバイトオーダーのことを気にする必要はありません。

整数はint型なので、4バイトです。
……ということは2バイト以上のデータに該当しますね。

整数を文字として転送すればこの問題は解消されますが、それは本質的な解決策ではありません。
なので、整数や少数を転送する時はネットワークバイトオーダーへ変換する必要があるのです。
このことを心に留めておいて下さい。