WinSock / BSDSocket

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

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


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

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
次の講座
【3限目】IPアドレス
[難易度:★★☆☆☆] IPアドレスについて学習します。(其の壱)

前の講座
【1限目】Bit と Byte
このエントリーをはてなブックマークに追加

まずは下の動画を見て下さい。

※曲は僕の大好きな Lose Yourself です。

閲覧ありがとうございます。このページではオンラインゲームの作り方を解説します。
僕の名前はRyuです。
世界中の誰かとランダムにマッチングして、1:1で対戦するカードゲームを作った経験を持ちます。

http://jamfolder.work/DMS

残念ながらサーバー台を捻出できなくなったり、モチベーションが落ちたりして現在はサービス終了しています。

オンラインゲームを作るルートはいくつもあります。
僕が取ったルートはこちらです。
C言語→C++言語→DXライブラリ→Winsock2→Linux/CentOS7 & BSDSocket

ちなみにDXライブラリはゲームの根幹の部分を制作するのに必要なだけで、通信機能とは一切関係ありません。お好きなライブラリでどうぞ。


他には……
C言語→C++言語→UnrealEngine
C#言語→Unity
Java言語→サーバーサイド

などのルートがあります。

僕が取った具体的なルートを提示します。
ここに書いてある修行を全てこなすことができれば、オンラインゲームは作れるようになります。

C言語→C++言語→DXライブラリ→Winsock2→Linux/CentOS7 & BSDSocket
スラスラわかるC言語 (Beginner’s Best Guide to Programmin)
・表記されているサンプルコードを90%以上写経する。(書き写す)
・読み進める過程で、なぜこうなるのかを理解する。

独習C 第4版
・表記されているサンプルコードを90%以上写経する。
・読み進める過程で、なぜこうなるのかを理解する。

やさしいC 第5版
・ポインタの章, 配列・ポインタの応用の章のみ読む
・読み進める過程で、なぜこうなるのかを理解する。

C言語→C++言語→DXライブラリ→Winsock2→Linux/CentOS7 & BSDSocket
C++ の絵本
・表記されているサンプルコードを90%以上写経する。
・読み進める過程で、なぜこうなるのかを理解する。

独習C++ 第4版
・表記されているサンプルコードを90%以上写経する。
・読み進める過程で、なぜこうなるのかを理解する。
(第9章は第13章の後に取り組んでも可)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
・1回読む。(サンプルコードの写経は必要ない)


C言語→C++言語→DXライブラリ→Winsock2→Linux/CentOS7 & BSDSocket
https://dixq.net/g/ にてDXライブラリの基礎を学ぶ。

https://bituse.info/game/shot/ にてオブジェクト指向的ゲーム開発(機能分割型ゲーム開発)の基礎を学ぶ。


C言語→C++言語→DXライブラリ→Winsock2→Linux/CentOS7 & BSDSocket
マスタリングTCP/IP 入門編 第5版
・1回読む(サンプルコードの写経は必要ない)

猫でもわかるネットワークプログラミング 第2版
・第1章/第4章/第6章/第7章のコンソールの部分だけを勉強する。
・上記の章の表記されているサンプルコードを50%(コンソールの部分)以上写経する。
・読み進める過程で、なぜこうなるのかを理解する。
・Win32GUIの話は理解さえできればよい。また、サンプルコード写経の必要はない。

WinSock2プログラミング―Windows Sockets APIによるネットワークプログラミングのすべて
・1回読む
・表記されているサンプルコードの内、気が向いたものは写経する。
・読み進める過程で、なぜこうなるのかを出来る範囲で理解する。

DXライブラリもWinsockも、関係ないライブラリとAPIなので、そのままincludeすると競合します。
競合を回避するには下のリンクの記事を読んで下さい。
DXライブラリとWinsock2を併用する方法
http://jamfolder.work/archives/22073653.html


C言語→C++言語→DXライブラリ→Winsock2→Linux/CentOS7 & BSDSocket
Linuxネットワークプログラミング
・表記されているサンプルコードを90%以上写経する。
・読み進める過程で、なぜこうなるのかを理解する。

サーバーサイドプログラムは家の余っているPC等にLinux/CentOS7等をインストールしてEclipse CDT を使用して書く。また、完成したサーバーサイドプログラムはさくらVPS等に載せる。

詰みそうなポイントは当ブログの記事(http://jamfolder.work/Programming)にも書いてある
WSAEventSelectの挙動などで分からないことがあれば参考にして欲しい。


また、本当に分からなくて困った時はこちらのメールへ相談頂ければ対応します。
但し、私も1人の人間なので解決できない問題もあります。
(★を@へ変更して下さい)
duemachine★gmail.com


結局のところゲーム制作は根気と根気と根気である。
簡単に諦めず、なんとか喰らいつこう。
このエントリーをはてなブックマークに追加

CPUの脆弱性Spectre と Meltdownに対応しなければいけなくなりました。
ホストサーバのOSをアプデして脆弱性の対策をしてくれるとのことです。

サーバの構成はこんな感じです
ホストOS{仮想化ソフト{仮想マシン{ゲストOS{私のApplication}}}}

つまりレンタルサーバー会社の仮想マシンを構築している総本山のOSをアプデして対応するとのことです。

アプデにともなってホストサーバをリブート(再起動)するので、客(僕)のサーバ(ゲストOS)も強制再起動することになります。

つまりホストサーバのアプデが完了次第、レンタルサーバー会社からアプデして下さいとメールが来ますので、適切なOSにアプデして下さい。

普通にコマンドを叩いてOSをアプデすればよいです。

追記:より詳しく知りたい方はこちら
https://www.rbkyan.com/blog/2018/01/07/meltdown%E3%81%A8spectre%E3%81%AB%E3%81%A9%E3%81%86%E5%AF%BE%E5%BF%9C%E3%81%97%E3%81%9F%E3%82%89%E3%82%88%E3%81%84%E3%81%AE%E3%81%8B%EF%BC%9F/
このエントリーをはてなブックマークに追加

プロジェクト→[貴方プロジェクト名]のプロパティ→リンカー→追加の依存ファイルに

ws2_32.lib;

を追加する必要がある。
12


VisualStudioの構成はDebugとReleaseで完全に分かれているので、もう一度依存関係を指定する必要がある。
このエントリーをはてなブックマークに追加

イベントを2つ作成する。つまり……

Event = WSACreateEvent(); // FD_READ,FD_WRITE等用
_Event = CreateEvent(NULL, FALSE, FALSE, NULL); // FD_ACCEPT用

FD_ACCEPTを判定するイベントだけ、別で作成する必要がある。続きを読む
このエントリーをはてなブックマークに追加

↑このページのトップヘ