スレッド: [csharpll:0269] おちゃらかIPC@.NET

スレッド

[csharpll:0269] おちゃらかIPC@.NET

[ | ▲ / | ]
Subject:
[csharpll:0269] おちゃらかIPC@.NET
From:
FUKUDA, Fumiki <epi-@...>
Date:
Wed, 25 Jan 2006 22:19:05 +0900
X-Mailer:
Microsoft Outlook Express 6.00.2900.2180
Message-Id:
<017d01c621b1$eaab7130$0d00a8c0@epi1st>
επιστημηです。

cppll/cppll_noviceで
"SendMessageによるIPC(Inter Process Communication)"
ネタを投下しました。

後学のために伺いたいのですけど、
..NETではSendMessage並にお手軽なプロセス間通信って、
用意されておるのでしょうか?

Win32API→.NET Framework対応表からSendMessageに相当
するのを引くと WndProc とある…なんで?
そら確かに受ける側はそうだろうけど送る側は?

--- : ------ : ------ : ------ : ------ : ---
FUKUDA, (episteme) Fumiki
magical, but never a mogic....

[csharpll:0270] RE: おちゃらかIPC@.NET

[ | / | ]
Subject:
[csharpll:0270] RE: おちゃらかIPC@.NET
From:
Hiroaki SHIBUKI <hidori@...>
Date:
Thu, 26 Jan 2006 00:01:29 +0900
X-Mailer:
Microsoft Office Outlook 11
Message-Id:
<01c201c621c0$38ff4a10$2001a8c0@aries>
In-Reply-To:
269
渋木です。

>"SendMessageによるIPC(Inter Process Communication)"
>ネタを投下しました。

WM_COPYDATA をベースにした方が帯域が広くてとれて良いかもです。

> .NETではSendMessage並にお手軽なプロセス間通信って、
> 用意されておるのでしょうか?

無いです。

.NET 1.x までは TCP or HTTP ベースのチャンネルが、リモーティングのインフラ
として提供されているだけです。

.NET 2.0 では名前付きパイプベースのチャンネルが提供されていますが、これも基
本的にはリモーティングのインフラとしての色彩が濃い物です。

> Win32API→.NET Framework対応表からSendMessageに相当
> するのを引くと WndProc とある…なんで?

所詮、「まったく違うモノ同士」について無理くり作られた対応表なわけで。。。

--
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#

[csharpll:0271] Re: おちゃらかIPC@.NET

[ | / | ]
Subject:
[csharpll:0271] Re: おちゃらかIPC@.NET
From:
FUKUDA, Fumiki <epi-@...>
Date:
Thu, 26 Jan 2006 05:28:44 +0900
X-Mailer:
Microsoft Outlook Express 6.00.2900.2180
Message-Id:
<01a101c621ed$f02dd8a0$0d00a8c0@epi1st>
References:
270
επιστημηです。 .NETな方がいてくれて心強いわぁ。

>>"SendMessageによるIPC(Inter Process Communication)"
>>ネタを投下しました。
>
> WM_COPYDATA をベースにした方が帯域が広くてとれて良いかもです。

ぇぇ、やりたい放題できますんでね。

>> .NETではSendMessage並にお手軽なプロセス間通信って、
>> 用意されておるのでしょうか?
> 無いです。

簡潔明快そっけなし (^^

> .NET 1.x までは TCP or HTTP ベースのチャンネルが、リモーティングのインフラ
> として提供されているだけです。

となるとマシンの内外問わずSocketぶっ挿すのが無難ってことになるんかな。

--- : ------ : ------ : ------ : ------ : ---
FUKUDA, (episteme) Fumiki
magical, but never a mogic....

[csharpll:0272] RE: おちゃらかIPC@.NET

[ | / | ]
Subject:
[csharpll:0272] RE: おちゃらかIPC@.NET
From:
Hiroaki SHIBUKI <hidori@...>
Date:
Thu, 26 Jan 2006 08:16:34 +0900
X-Mailer:
Microsoft Office Outlook 11
Message-Id:
<01ee01c62205$62a8d350$2001a8c0@aries>
In-Reply-To:
271
渋木です。

> 簡潔明快そっけなし (^^

simple is beautiful が、C 系言語の特質 ;-)

> > .NET 1.x までは TCP or HTTP ベースのチャンネルが、リモーティングのインフ

> > として提供されているだけです。
>
> となるとマシンの内外問わずSocketぶっ挿すのが無難ってことになるんかな。

ってなっちゃいますし、実際そうなんですが。。。
ポート番号を自動的にネゴシエートする仕組みが無いところが、個人的にはかなり
スキじゃないです。

じゃあどする?って言われると、UDDI で。。。とかいう話になって、それはそれで
大げさな気も (-o-;

--
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#

[csharpll:0273] Re: おちゃらかIPC@.NET

[ | / | ]
Subject:
[csharpll:0273] Re: おちゃらかIPC@.NET
From:
FUKUDA, Fumiki <epi-@...>
Date:
Thu, 26 Jan 2006 08:30:47 +0900
X-Mailer:
Microsoft Outlook Express 6.00.2900.2180
Message-Id:
<020101c62207$5f44fcf0$0d00a8c0@epi1st>
References:
272
επιστημηです。

>> となるとマシンの内外問わずSocketぶっ挿すのが無難ってことになるんかな。
> ってなっちゃいますし、実際そうなんですが。。。
> ポート番号を自動的にネゴシエートする仕組みが無いところが、
> 個人的にはかなりスキじゃないです。

そかそか、空いてるport#を見つけなあきませんもんねぇ。
RegisterWindowMessageみたいに空いたport#を割り振って
くれたらええのにね。

> じゃあどする?って言われると、UDDI で。。。とかいう話になって、
> それはそれで大げさな気も (-o-;

うぇー、ナタで髭剃るよな話 orz
# 大は小を兼ねる? しゃもじは耳掻きにはならんて

--- : ------ : ------ : ------ : ------ : ---
FUKUDA, (episteme) Fumiki
magical, but never a mogic....

[csharpll:0274] Re: おちゃらかIPC@.NET

[ | / | ]
Subject:
[csharpll:0274] Re: おちゃらかIPC@.NET
From:
Tietew <tietew@...>
Date:
Thu, 26 Jan 2006 11:50:47 +0900
X-Mailer:
Becky! ver. 2.23 [ja]
Message-Id:
<20060126112502.D0F7.TIETEW‐at‐tietew.net>
In-Reply-To:
273
References:
272 273
On Thu, 26 Jan 2006 08:30:47 +0900
In article <020101c62207$5f44fcf0$0d00a8c0@epi1st>
[[csharpll:0273] Re: おちゃらかIPC@.NET]
"FUKUDA, Fumiki" <epi-@...> wrote:

> >> となるとマシンの内外問わずSocketぶっ挿すのが無難ってことになるんかな。
> > ってなっちゃいますし、実際そうなんですが。。。
> > ポート番号を自動的にネゴシエートする仕組みが無いところが、
> > 個人的にはかなりスキじゃないです。
>
> そかそか、空いてるport#を見つけなあきませんもんねぇ。
> RegisterWindowMessageみたいに空いたport#を割り振って
> くれたらええのにね。

port = 0 で bind() すると勝手に空きポートくっつけてくれません?
少なくとも winsock はそれが仕様のハズ…

....

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemnetsocketstcplistenerclassctortopic3.asp
| If you do not care which local port is used, you can specify 0
| for the port number. In this case, the service provider will
| assign an available port number between 1024 and 5000.

....

TcpListener listen = new TcpListener(IPAddress.Lookback, 0);
これでOK



—[ Tietew ]——————————————————————————
メ : tietew@... / tietew@... / tietew@...
ホペ: http://www.tietew.net/     Tietew Windows Lab.
     http://www.masuclub.net/   鱒倶楽部
指紋: 26CB 71BB B595 09C4 0153  81C4 773C 963A D51B 8CAA

[csharpll:0275] Re: おちゃらかIPC@.NET

[ | / | ]
Subject:
[csharpll:0275] Re: おちゃらかIPC@.NET
From:
FUKUDA, Fumiki <fukuda.fm@...>
Date:
Thu, 26 Jan 2006 12:12:18 +0900
X-Mailer:
Microsoft Outlook Express 6.00.2800.1506
Message-Id:
<010101c62226$51124010$e5d2060a@ncosltcff2>
References:
272 273 274
επιστημηです。

> port = 0 で bind() すると勝手に空きポートくっつけてくれません?
> 少なくとも winsock はそれが仕様のハズ…
> ...
> TcpListener listen = new TcpListener(IPAddress.Lookback, 0);
> これでOK

あらホント。
んで、このSocketにconnectする側は
port#をどうやって知ればいいのかしらん?

[csharpll:0276] Re: おちゃらかIPC@.NET

[ | / | ]
Subject:
[csharpll:0276] Re: おちゃらかIPC@.NET
From:
Tietew <tietew@...>
Date:
Thu, 26 Jan 2006 12:35:20 +0900
X-Mailer:
Becky! ver. 2.23 [ja]
Message-Id:
<20060126122254.D0FA.TIETEW‐at‐tietew.net>
In-Reply-To:
275
References:
274 275
On Thu, 26 Jan 2006 12:12:18 +0900
In article <010101c62226$51124010$e5d2060a@ncosltcff2>
[[csharpll:0275] Re: おちゃらかIPC@.NET]
"FUKUDA, Fumiki" <fukuda.fm@...> wrote:

> > port = 0 で bind() すると勝手に空きポートくっつけてくれません?
> > 少なくとも winsock はそれが仕様のハズ…
> > ...
> > TcpListener listen = new TcpListener(IPAddress.Lookback, 0);
> > これでOK
>
> あらホント。
> んで、このSocketにconnectする側は
> port#をどうやって知ればいいのかしらん?

ソケットなら getsockname() なんですけど、なんかプロパティありま
せんの?


—[ Tietew ]——————————————————————————
メ : tietew@... / tietew@... / tietew@...
ホペ: http://www.tietew.net/     Tietew Windows Lab.
     http://www.masuclub.net/   鱒倶楽部
指紋: 26CB 71BB B595 09C4 0153  81C4 773C 963A D51B 8CAA

[csharpll:0277] Re: おちゃらかIPC@.NET

[ | / | ]
Subject:
[csharpll:0277] Re: おちゃらかIPC@.NET
From:
FUKUDA, Fumiki <fukuda.fm@...>
Date:
Thu, 26 Jan 2006 15:00:35 +0900
X-Mailer:
Microsoft Outlook Express 6.00.2800.1506
Message-Id:
<017001c6223d$d7a93d60$e5d2060a@ncosltcff2>
References:
274 275 276
επιστημη@いろいろ音痴 です。

> ソケットなら getsockname() なんですけど、なんかプロパティありま
> せんの?

いたたた、ボロ出してしまいます orz
client側ではaddrとport#決め打ちでconnectしてばっかりです。

教えてくださいまし。ばっくれsocket一般のおはなし、
serverがテキトーに決めたport#をclientはどうやって知るのかしら?

[csharpll:0278] Re: おちゃらかIPC@.NET

[ | / | ]
Subject:
[csharpll:0278] Re: おちゃらかIPC@.NET
From:
Tietew <tietew@...>
Date:
Thu, 26 Jan 2006 16:45:04 +0900
X-Mailer:
Becky! ver. 2.23 [ja]
Message-Id:
<20060126161159.D475.TIETEW‐at‐tietew.net>
In-Reply-To:
277
References:
276 277
On Thu, 26 Jan 2006 15:00:35 +0900
In article <017001c6223d$d7a93d60$e5d2060a@ncosltcff2>
[[csharpll:0277] Re: おちゃらかIPC@.NET]
"FUKUDA, Fumiki" <fukuda.fm@...> wrote:

> > ソケットなら getsockname() なんですけど、なんかプロパティありま
> > せんの?
>
> いたたた、ボロ出してしまいます orz
> client側ではaddrとport#決め打ちでconnectしてばっかりです。
>
> 教えてくださいまし。ばっくれsocket一般のおはなし、
> serverがテキトーに決めたport#をclientはどうやって知るのかしら?

あっ。クライアントか。






うーんどうしましょう(おいおい


ただ,SendMessageにしてもウィンドウハンドルがわからないと通信で
きないわけで,通信するプログラムに依るんじゃないでしょうか。


—[ Tietew ]——————————————————————————
メ : tietew@... / tietew@... / tietew@...
ホペ: http://www.tietew.net/     Tietew Windows Lab.
     http://www.masuclub.net/   鱒倶楽部
指紋: 26CB 71BB B595 09C4 0153  81C4 773C 963A D51B 8CAA

[csharpll:0280] Re: おちゃらかIPC@.NET

[ | / | ]
Subject:
[csharpll:0280] Re: おちゃらかIPC@.NET
From:
FUKUDA, Fumiki <fukuda.fm@...>
Date:
Thu, 26 Jan 2006 17:03:37 +0900
X-Mailer:
Microsoft Outlook Express 6.00.2800.1506
Message-Id:
<022401c6224f$0387ccb0$e5d2060a@ncosltcff2>
References:
276 277 278
επιστημηです。

> > 教えてくださいまし。ばっくれsocket一般のおはなし、
> > serverがテキトーに決めたport#をclientはどうやって知るのかしら?
>
> うーんどうしましょう(おいおい

あひゃ。

> ただ,SendMessageにしてもウィンドウハンドルがわからないと通信で
> きないわけで,通信するプログラムに依るんじゃないでしょうか。

SendMessageはHWND_BROADCASTに投げれば全員に届くもん。
これ使って"あたしのハンドルはコレで〜す"って言える悶。

[csharpll:0284] Re: おちゃらか IPC@.NET

[ | / | ]
Subject:
[csharpll:0284] Re: おちゃらか IPC@.NET
From:
Shin'ya MORINO <smorino@...>
Date:
Fri, 27 Jan 2006 01:45:35 +0900
X-Mailer:
Datula version 1.51.09 for Windows
Message-Id:
<43d8f43a.3216%smorino‐at‐d1.dion.ne.jp>
In-Reply-To:
280
References:
276 277 278 280
森野です。

FUKUDA, Fumikiさんの<022401c6224f$0387ccb0$e5d2060a@ncosltcff2>から
>επιστημηです。
ご機嫌麗しゅう。(^^

>SendMessageはHWND_BROADCASTに投げれば全員に届くもん。
>これ使って"あたしのハンドルはコレで〜す"って言える悶。
えと...そういう単純で一般的なメカニズムないです。(^^;;
                                 >> IP(Internet Protocol)

やるんだったら、別のサービス使うです。(LDAPとか)
それはそれでメンドクサイので、ふつー、やんないです。

有名なサービスは、ポートが決まってます。
# いわゆるWellknown portです。
# http://iptables-tutorial.frozentux.net/other/services.txt
そういう有名なサービスは、基本的に、ポート番号1024よか小さいところに、
に割り当てられていて、通常、ユーザが独自プロトコルで使うものではないで
す。
で、それ以外で、つかってなさそうな場所を使えばいーじゃん、の、ノリで
す。番号がでかいほど、場末の飲み屋っぽくなります。
そして、それぞれのクライアントアプリは、設定なり、コード内部に、その
割り当てたポート番号を持っているという感じです。

たとえば...とあるネットワーク対応プリンタドライバのインストーラは、
ネットワーク内のプリンタを検索するために、とあるポートにブロードキャ
ストパケットを投げます。そして、返事を返すホストはプリンタであり、返さ
れるパケット内部にはモデル名が、きっと、かかれているんでしょう。
だけど、そのポート番号って、きっと、その会社のために予約はされてないで
す。きっと、勝手に使われちゃってます。

# こういうの、てきとーにいーかげんなので、使い勝手がよいです。(^^;;


--
Shin'ya MORINO mailto:smorino@...

[csharpll:0279] Re: おちゃらかIPC@.NET

[ | / | ]
Subject:
[csharpll:0279] Re: おちゃらかIPC@.NET
From:
Hisashi Katayama <katayama@...>
Date:
Thu, 26 Jan 2006 16:58:25 +0900
Message-Id:
<43D88121.9020305‐at‐kikansha.jp>
In-Reply-To:
277
References:
274 275 276 277
かたやまです

FUKUDA, Fumiki wrote:

>επιστημη@いろいろ音痴 です。
>  
>

(^^)

教えてくださいまし。ばっくれsocket一般のおはなし、

>serverがテキトーに決めたport#をclientはどうやって知るのかしら?
>  
>

Passive Socket 側は、たとえば、10000番のポートで待っているとすると、
Active 側はそのポートにタイして connect してくるわけで、こればっかり
は、自分のシステムでルール付けした関数を用意するとかしないとだめ
ではないでしょうか。

======
Hisashi Katayama

[csharpll:0281] Re: おちゃらかIPC@.NET

[ | / | ]
Subject:
[csharpll:0281] Re: おちゃらかIPC@.NET
From:
FUKUDA, Fumiki <fukuda.fm@...>
Date:
Thu, 26 Jan 2006 17:20:48 +0900
X-Mailer:
Microsoft Outlook Express 6.00.2800.1506
Message-Id:
<024601c62251$69f754f0$e5d2060a@ncosltcff2>
References:
274 275 276 277 279
επιστημηです。

> Passive Socket 側は、たとえば、10000番のポートで待っているとすると、
> Active 側はそのポートにタイして connect してくるわけで、こればっかり
> は、自分のシステムでルール付けした関数を用意するとかしないとだめ
> ではないでしょうか。

どーなんだろ、僕が知らぬところで勝手にsocket開けてる奴
(誰かが書いたアプリ)にそのルールを強要できんのじゃなかろか。

Win32APIだと RegisterWindowMessage("なんとか") すれば
誰も使ってないメッセージIDくれますやん。

..NETでIPCとなると実際のところsocket使うっきゃないとすれば、
RegisterWinsockPort("かんとか")で未使用ポート#くれたらいいのに。

[csharpll:0282] Re: おちゃらかIPC@.NET

[ | / | ]
Subject:
[csharpll:0282] Re: おちゃらかIPC@.NET
From:
Hisashi Katayama <katayama@...>
Date:
Thu, 26 Jan 2006 17:50:10 +0900
Message-Id:
<43D88D42.6030307‐at‐kikansha.jp>
In-Reply-To:
281
References:
274 275 276 277 279 281
かたやま@ハズしてるんだろうか。。。です

う〜ん、Thunderbird つかいにくい・・・(慣れてないだけかな)

>どーなんだろ、僕が知らぬところで勝手にsocket開けてる奴
>(誰かが書いたアプリ)にそのルールを強要できんのじゃなかろか。
>  
>

仮にそういう強要できるものがあるとすると、Passive ソケットを強要されたもの
で新たに作るわけですよね。ただ、Passive ソケットを作成してされているアプ
リに対して、ルールをぶっ込むのをどう突っ込むかを考え、そいつにソケッ
トで電文なげると考えると、client はそのポートを知らないと投げられないですよ
ね。。。うーん、自前で仕組みを作るしか思いつかないです。。。。

>Win32APIだと RegisterWindowMessage("なんとか") すれば
>誰も使ってないメッセージIDくれますやん。
>  
>

ふむ

>.NETでIPCとなると実際のところsocket使うっきゃないとすれば、
>RegisterWinsockPort("かんとか")で未使用ポート#くれたらいいのに。
>  
>

これは、上記の「勝手にsocket開けてる奴」の文章の、「勝手」の部分ですよね?

なるほど。勝手に決めたものを client が知りたいというのと、空きポートを探すと
いうのと両方の質問があったんですね (^^)

質問が「socket一般でserverがテキトーに決めたport#をclientはどうやって知
るのかしら」
だったので、空いているポートを探すってのと&それを強要するいう観点で答え
ていませ
んでした。

うーん、getsockname() 系以外には、私の知る限りなさそうな気がします

Windows なら、何か用意されているのかもしれませんが。。。

# 識者の方、よろしく〜 (^^;;
======
Hisashi Katayama

[csharpll:0283] RE: おちゃらかIPC@.NET

[ | / ▼ | ]
Subject:
[csharpll:0283] RE: おちゃらかIPC@.NET
From:
Hiroaki SHIBUKI <hidori@...>
Date:
Thu, 26 Jan 2006 20:48:35 +0900
X-Mailer:
Microsoft Office Outlook 11
Message-Id:
<002c01c6226e$71216a00$2001a8c0@aries>
In-Reply-To:
281
渋木です。

> .NETでIPCとなると実際のところsocket使うっきゃないとすれば、
> RegisterWinsockPort("かんとか")で未使用ポート#くれたらいいのに。

それの大層なヤツが UDDI なわけで。。。

名前付きパイプの名前を決める独自の規則を考えれば、なんとかなるんじゃないす
か?

--
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#

Navigation

検索

[検索ヘルプ]

Maintener: Tietew <www.tietew.jp>
Powered by Ruby on Rails, Mongrel, PostgreSQL, and Hyper Estraier.
click here