Monaはもう一人じゃない

WindowsからUDPMonaへとか、大はしゃぎした後、風呂に入りながら思いました。



Monaは、もう一人じゃないんだなぁと。
これからはネットワークを通してMona同士で通信したり、他のOSと協調動作したりデータ交換したりと格段に世界が拡がるんだろうな。



いまどきのOSからしたらそんなの当たり前ですが手作りのOSでネットワークの海に飛び出すのはとても劇的な変化なわけで。
この瞬間がとてもとても大きな転換点じゃないかと思っています。

UDPお勉強

IPが分かっていれば、特に難しいところはなさそうです。
ネットワークレイヤ的には

  1. イーサーネットタイプ 0x800 によりIP
  2. IPプロトコル 17 により UDP
  3. UDPのポート番号を元にアプリケーションを特定
  4. アプリケーション特定のプロトコルでほげほげ

という感じかな。
簡単なメッセンジャーを作ろう。


UDPは↓の8章を読めば十分でしょう。


マスタリングTCP/IP 応用編

マスタリングTCP/IP 応用編

Mesa取り込み難航中

Mesaの取り込みの続きを行いました。
前回行ったのは以下2つ

  • MesaForMonaのビルドのためのいくつかの修正。
  • ビルド手順の確認


今回はGEARSのビルドおよび実行までを目標としました。


まずGEARSのビルドのために

  • #include を追加
  • Makefileのinstall先を変更

を行い、GEARS.EX5のビルドに成功


ISOイメージを作って実行してみましたが実行時にDLLがリンクエラーとなってしまいました。


というわけで、ここまでの手順と成果物をまとめます。

  1. mesawork-20051127.zip(4.2MB)をダウンロード・展開します。
  2. tmpmonalibcディレクトリで make && make installします。/usr/local/mona/bin/LIBS/TMPMLIBC.DLLができているはずです。
  3. Mesa-6.2.1ディレクトリで make mona-staticします。Mesa-6.2.1/libs/ディレクトリに、libOSMesa.a,libGLU.aができているはずです。
  4. Mesa-6.2.1ディレクトリで make monaします。Mesa-6.2.1/lib/ディレクトリに、GLU.DLL, libGLU-imp.a, libOSMesa-imp.a, OSMESA.DLLができているはずです。
  5. cp tmpmonalibc/libtmpmonalibc-imp.a Mesa-6.2.1/lib
  6. gearsディレクトリでmakeする。
  7. Mesa-6.2.1/lib/GLU.DLL, OSMESA.DLLを /usr/local/mona/bin/LIBS/にコピーする
  8. MonaNew/tool/mkimgディレクトリで make iso する
  9. Monaを起動し、gearsを実行すると Linking TMPMLIBC.DLL TO OSMESA.DLL....NGとなり実行に失敗する。
  10. PEがだめならELFということで、include $(SHAREDIR)/configs/monapi-el5.incとし、gearsをビルドしなおすもアクセス違反で落ちる。

RubyでUDP

MonaでのUDPテストに、Windows側からパケット送信する必要が出てきました。
C++PerlJavaC#と選択肢はいろいろあるのですがここは、やはりRubyでしょう。
最近Geekの間では、こっそりRubyを勉強するのが流行っているようですし(;´Д`)


とても簡単ですね。Ruby! Ruby ! (はしゃぎすぎ

require 'socket'

socket = UDPSocket.new()
socket.connect("192.168.100.2", 8888)

socket.send("Hello Mona", 0)