スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 苦しみながらも前進 | トップページ | どこまでやるかなあ »

次はサーバー機能

今は、macOS用ネイティブ版AGMPlayerの開発フェーズで、ローカルファイル系の操作は可能になったので、引き続き、ネットワーク系の実装を行なっていたのだが、クライアント系については動作可能になった。なので、次はサーバー機能になる。

AGMPlayerのネットワーク機能で利用しているネットワーク処理ルーチンは、Mirror-DTCで利用しているネットワーク処理ルーチンとほぼ同様だ。

そして、macOS用Mirror-DTCのネイティブ版は既に存在している訳なので、ネイティブ版AGMPlayerの開発にあたって、ネットワーク処理ルーチンは、既に動作実績があるmacOS用Mirror-DTCから持ってこれている。

なので、クライアント系の実装についても、ライブラリビューとのインタフェース部分で少し苦労した事を除けば、大して時間もかからなかった訳だ。

その時に書いた様に、サーバー機能というのは、AGMPlayerのその他の部分との関連性で言えば、より一層、独立性は高く、既に、Windows用のネイティブ版AGMPlayerが存在している事を鑑みれば、基本的には、そのコードをコピーしてくるだけで、動作しても可笑しくはなさそうだ。

しかし、実際には、サーバー機能についても、少し問題があって、Windows版のコードをそのまま動作させる事は出来ない。

これは何故なのか、というと、macOSでは、OSのAPIを普通に使うと、ファイルのパス名で使われる文字コードはUTF8になるし、ディレクトリの区切り文字は"/"になる。

しかし、AGMPlayerのネットワークプロトコルでは、使われる文字コードが異なる訳だ。

と、言う事なので、サーバー機能についても、今日の時点で、既に、ネットワーク接続自体は可能になっているのだが、まだ、動作している状況ではない。

しかしまあ、何度も書いている様に、サーバー機能はその他の機能との関連性は殆ど無いので、文字コードの問題を機械的に何とかすれば動作する筈だ。なので、多分、サーバー機能についても、明日には、それなりに動作している筈ではある。

ちなみに、前述の様に、AGMPlayerのネットワーク処理ルーチンはMirror-DTCから持ってきているのだが、Mirror-DTCのネットワーク処理ルーチンはMasterReversiから持ってきている。

で、MasterReversiの初版をリリースしたのは2007年の暮れなのだが、ネットワーク対局機能は2006年には実装が終わっていた。

つまり、AGMPlayerで使用しているネットワーク処理ルーチンのベースは10年以上前のコードになっているのだが、これが何を意味するのかというと、ネットワーク処理ルーチン内の文字コードはシフトJISになっている、という事だ。

具体的には、AGMPlayerでは、少なくともクライアント/サーバー名とコミュニティー名は、ネットワーク上ではシフトJISでやり取りされている。

と、言う事で、K&Rのプログラミング言語Cでは、文字列はchar *でしかなかったのだが、実際には、色々とややこしい、今日この頃になってしまっている訳だ。

« 苦しみながらも前進 | トップページ | どこまでやるかなあ »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/65368558

この記事へのトラックバック一覧です: 次はサーバー機能:

« 苦しみながらも前進 | トップページ | どこまでやるかなあ »

2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    Cookieを無効にする設定およびAdsenseに関する詳細については、以下のリンクを参照下さい。

    広告 - ポリシーと規約 - Google