OpenSourceの.NET FrameworkであるMonoをインストールして、C#で作ったXMLSocketServer.exeをcoLinux上のDebian 3.2で動かしてみた。
VisualStudioでコンパイルしてできた.exeのままで、ちゃんとdllも読み込んで動作してくれるのが凄い。
(.NETなので、VB.NETで書いたプログラムも同じようにLinuxで動くはず)
Flash Media Serverは高いので、flvのストリーミング以外ならサーバーサイドも自分で全部作った方がよさげ。
ちなみにMonoいれてみたきっかけは、きょろさんがおすすめしてたから
→ New Generation Chronicle:井上恭輔——電子工作より生まれし巫女萌えバイナリアン (1/10) – ITmedia エンタープライズ
■インストール
.NETFramework on Linux (Mono) (TORIGOE DESIGN. doc)を参考に、最新版1.2.6をダウンロードしてインストールした
wget ftp://www.go-mono.com/archive/1.2.6/linux-installer/6/mono-1.2.6_6-installer.bin
chmod +x mono-1.2.6_6-installer.bin
./mono-1.2.6_6-installer.bin
aptから入れる事は出来ないけど、インストールはとても簡単だった。
■プログラムの作り方
普通に「コンソールアプリケーション」を選んで、コンパイルしてできた .exe がそのままLinuxで動くようになる。
できたもの => MonoTest (Visual Studio2005 / C#2.0)
■作ったプログラム
まず最初に、スレッドでループし続けて1秒ごとに現在の時刻を表示するプログラムを作った => SourceCode
次に、正月にDLL化したXMLSocket.NETの機能を使って、Flash(Windows上)とXMLSocketServer(Debian上)とで、XMLSocketCommandのやりとりをやってみた。
=> SourceCode
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Net;
usingSystem.Net.Sockets;usingOrg.Shokai.Net.XMLSocket;
namespaceMonoTest
{
classMonoXMLSocketServer
{
privateOrg.Shokai.Net.XMLSocket.Commandercommander;staticvoidMain(string[]args)
{
MonoXMLSocketServerapp=newMonoXMLSocketServer();
app.Run();
}publicMonoXMLSocketServer()
{
commander=newCommander();
commander.xmlSocketServer.MaxClients=3;
commander.onRecvCommand+=onRecvData;
commander.onAcceptClient+=onAcceptClient;
}publicvoidRun()
{
Console.WriteLine(“run”);
commander.Listen(IPAddress.Any,5500);Stringinput=””;
while(input!=”exit”){
input=Console.ReadLine();
commander.Broadcast(newCommand(“NoName”,input));
}commander.Close();//終了
}publicvoidonAcceptClient(TcpClientclinet)
{
Console.WriteLine(“acceptnewclient”);
}publicvoidonRecvData(Org.Shokai.Net.XMLSocket.Commandcommand)
{
Console.WriteLine(“receive=>”+command.ToString());
}}
}
まだ速度とかは調べてないけど、とにかくそのまま動いてしまうのは凄い。
あと、ネットワークとスレッドまわりはC#はけっこう良いと思うので、いいんじゃないですか
追記:
Macでも試してみたけど、XMLSocketServerの方だけ動かない。
ClientをAcceptした時に “Object reference not set to an instance of an object” という警告が出る