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
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;using Org.Shokai.Net.XMLSocket;
namespace MonoTest
{
class MonoXMLSocketServer
{
private Org.Shokai.Net.XMLSocket.Commander commander;static void Main(string[] args)
{
MonoXMLSocketServer app = new MonoXMLSocketServer();
app.Run();
}public MonoXMLSocketServer()
{
commander = new Commander();
commander.xmlSocketServer.MaxClients = 3;
commander.onRecvCommand += onRecvData;
commander.onAcceptClient += onAcceptClient;
}public void Run()
{
Console.WriteLine(”run”);
commander.Listen(IPAddress.Any, 5500);String input = ”";
while(input != ”exit”){
input = Console.ReadLine();
commander.Broadcast(new Command(”NoName”, input));
}commander.Close(); // 終了
}public void onAcceptClient(TcpClient clinet)
{
Console.WriteLine(”accept new client”);
}public void onRecvData(Org.Shokai.Net.XMLSocket.Command command)
{
Console.WriteLine(”receive => ” + command.ToString());
}}
}
まだ速度とかは調べてないけど、とにかくそのまま動いてしまうのは凄い。
あと、ネットワークとスレッドまわりはC#はけっこう良いと思うので、いいんじゃないですか
追記:
Macでも試してみたけど、XMLSocketServerの方だけ動かない。
ClientをAcceptした時に “Object reference not set to an instance of an object” という警告が出る