ログイン

2016年3月 弊社ホームページは新しくなりました。 https://thinkridge.com

メインメニュー

携帯公式サイト


携帯電話をもっと便利に
もっと楽しく


史上初の吹奏楽専門着メロサイト


POPで癒しでライトでとんがって気持ちのいい〜オルゴール着メロをあなたに

Magome

クラウドベースの MIDI シーケンサ Magome

音楽制作に興味のある方を対象に、スタンドアロンでも使え、ネットならではの面白さも兼ね備えた音楽制作アプリの提供を目指しています

for 携帯電話

https://thinkridge.com/m/
ケータイはこちらへ

2013年6月15日(土曜日)

boost::asio ソケットを別プロセスに渡す

カテゴリー: - takatsuka @ 10時11分29秒

久しぶりに boost::asio ネタです。

サーバーで、acceptしたソケットを、別のプロセスに渡したい場合があると思います。
そのあたり boost::asio では簡単にできるんだろうか?と思い、ソースを眺めたり、Examples 見たりしたけど、そのものズバリっぽいものが見当たらない。
Examples には fork の項に近いのがあったんですが、fork() とか使ってるとこからして windows 向けではなさげだし・・・、

というわけで、今回のネタも windows 向けです。
サーバーを windows でってのがそもそも・・・という意見もありそうですが、windows でも P2P アプリを作りたいとか、ちょっとは需要あると思うんです。

というわけで、boost::asio で、accept したソケットを別のプロセスに渡す方法ですが、
結局、boost::asio だけで閉じることは出来ず win32 api を使ってます。

やることは、
複製元のソケットで、

boost::asio::ip::tcp::socket socket;
・・・
WSAPROTOCOL_INFO pi = {0,};
::WSADuplicateSocket( socket.native(), ::GetCurrentProcessId(), &pi);
SOCKET h = ::WSASocket( pi.iAddressFamily, pi.iSocketType,pi.iProtocol, &pi, 0, 0 );
socket.close();

ってハンドルをこさえて、複製先の子プロセスでは、

socket.assign( boost::asio::ip::tcp::v4(), h );

とやることで実現してます。

注意点としては、

#define BOOST_ASIO_DISABLE_IOCP 1

を入れることなんですが、これを入れることのデメリットがよくわからずにやってます。

こさえたサンプルアプリのソース一式を置いておきますので、必要な方は見てみてください。そしてダメ出しとかお願いします。
クライアント側がないと動作が見にくいという場合、boost::asio 使ったチャットソフトが同じところにありますので、そちらも参照下さい。

http://www.thinkridge.com/modules/mydownloads/

そういえば、いつのまにか boostpro サイト が終了してたんですね。
インストーラーは便利だっただけにとても残念です。
運営の方、お疲れ様でござました。感謝です。


2013年6月2日(日曜日)

納品

カテゴリー: - takatsuka @ 20時59分08秒

お取引先で社内サーバー機のハードのトラブルをきっかけに、古くなったサーバー機のリプレースということで対応しました。

いわゆるクラウド化はせずに、社内の閉じたネット内のサーバーとして使うことが望まれていたのですが、
仮想化はしておいたほうが良いと考えて、旧サーバーの機能を仮想PCとして構築し直して、対応しました。

もちろん、貧乏テクノウハウを駆使して、必要最小限のサーバー機と業務でも使える安いソフトや無料ソフトを駆使して対応。

仮想PCとして事前に環境を構築しておいて、納入日に機材ごと持参して交換作業に臨んだんですが、
旧サーバーの使われ方の細かなとこはその場で対応。けっこう手こずりました。

しかし今回ここで仮想化しておいたので、もし今後、またサーバー機が壊れたとか、クラウドにしたい、とかいう状況になっても対応は簡単なハズ。

しかし、行き帰りの運転時間は往復6時間半。
いつも思うけど千葉県の特に船橋の道路事情はほんとにひどい。
ふなっしーは梨のアピールではなく、道路事情改善のアピールをしてほしいと思いました。


30 queries. 0.019 sec.
Powered by WordPress Module based on WordPress ME & WordPress

カレンダー
2013年 6月
« 5月   7月 »
 1
2345678
9101112131415
16171819202122
23242526272829
30  
月別過去ログ
カテゴリ一覧
検索
最近の投稿
最近のコメント
投稿者ブロック