HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0122
かわUDPによる通信について7未解決


かわ

リンク

2007/1/22(Mon) 02:59:39|NO.4999

最近を職場のLANで通信をするソフトを作ってみようと思ってます。
手始めに多人数が参加してメッセージを送るチャットみたいなのを作ろうと考えています。
イメージとしてはフリーソフトのIPメッセンジャーみたいなのです。

不特定多数が接続してくる可能性があるので、いろいろ読んだ結果、
マルチキャストでデータを送信すれば効率良く通信できるなぁと考えて、
PCBさんの作ったPCBNETというプラグインを使わせていただいております。

基本的な考えは、
不特定多数が接続するので、マルチキャストで自分のIPを送信し、その後は特定のIPに送る。
というものですが、その前に試しに入っていたサンプルプログラムのマルチキャストのチャットみたいなのを
職場で動かしてみたのですが、どうしても他のPCにデータが送れません。自分には送れます。
よくわからないですが、そもそもマルチキャストが使えないのではないかと考えています。

そこで質問です。
代替案として、例えば、自分のIPアドレスの一番下位の8ビットを1〜255まで変えて
片っ端から接続にいって返事を待つというのも考えましたが、ネットワークの負荷とかスピードが心配です。
もっとスマートな方法はあるのでしょうか?



この記事に返信する


kanzaki

リンク

2007/1/22(Mon) 07:41:44|NO.5001

マルチキャストパケットは、実際に投げた事が無いので想像でしか話せませんが
スイッチングHUBとかで接続しているネットワークですかね?(IPルーターが絡むと面倒な話になるので)

>代替案として、例えば、自分のIPアドレスの一番下位の8ビットを1〜255まで変えて
との事でしょうから、同一のサブネットでの通信と仮定します。

udpmjoinはしましたか?(クラスのDのIPアドレスでグループ化しましたか?)
そのIPアドレスでも通信が出来ないのであれば、代替え案でしょう…



…管理者がいないネットワークで、怒られる事が無ければ、
ブロードキャストパケットで送信するのは如何でしょうか? 一回で済みます。
あと、通常のIPルーターは越えない筈なので、他のノード(WANとか)には迷惑は掛からない筈です。


>代替案として、例えば、自分のIPアドレスの一番下位の8ビットを1〜255まで変えて
と同等ですが、ネットワークの負荷小さいです。
しかし管理者によっては、ブロードキャストに目くじらを立てる人もいますので…
(そういうときは、「じゃあarp止めてみろよ」とか喧嘩になったりします。)



As

リンク

2007/1/22(Mon) 14:11:06|NO.5008

職場のLANはローカルネットワークなのでIPアドレスが変わることがないため、
IPアドレスのリストを各PCに保持しておけばいいのではないでしょうか?

その際、「登録されてないIPアドレス」というのが出てきた場合は、
どこのPCからでも利用できるコマンドをすでに保持してあるIPアドレスリストに
一斉送信し、新たにIPアドレスリストに「登録されてないIPアドレス」を追加する。

この方法を使えば ポートスキャンのようなことはしなくてもすむと思います。

例:「/addip ***.***.***.***」で各PCのIPアドレスリストに追加 ※存在しないIPの場合は追加できない(条件式)

(※なお、この方法は P2Pです。)

IPアドレスとポートをしっかりと設定していれば、他PCにも接続できると思います。



kanzaki

リンク

2007/1/22(Mon) 20:43:40|NO.5019

全角の書き方では、内容までは伝わらないと思いましたので追記します。

まず、

 マルチキャストなら、一回の送信で複数のホストへ送信できるし、管理もしやすい

 ユニキャスト(単一宛送信)だと、ホスト毎に送信しなければ成らないし、
 送信するべき送信先ホストの管理が面倒でスマートではない。

 しかし、ユニキャストで送信しなければ実現できそうに無い。
 他に方法は無い物か?

ということですよね?(違ったらすいません)



ブロードキャストで送信するというのは、
ソフトの使用者を探すの事に、送り先を指定しない…という提案です。

192.168.1.1〜254のネットワークで送信する場合
192.168.1.255宛に送信すれば、全員に送信されます。
これがブロードキャストです(知ってたらすいません。)

ブロードキャストで、自分の情報を全員に送信します。
(ソフトを起動していないホストには無視してもらいます。)
ソフトを起動しているホストが、パケットを受け取ったら
自分の情報をユニキャストで送り返します。(既に溜め込んでいるリストを送っても良いかも)
送られてきた情報を元にリストを作成します。

定期的にこの動作を繰り返します。
応答が無くなったホストにはユニキャストで生存確認などして、リストの新鮮さを保ちます。



弱点としては、サブネットが異なるネットワークには使用できない点と
スマートなのか? に関して自信が持てない点です。

上手く伝わればよいのですが…



かわ

リンク

2007/1/22(Mon) 21:12:55|NO.5020

お返事ありがとうございます。

As様
職場は人の異動が激しく、その都度管理をするのが面倒に思われて前述の方法を考えています。
絶対動かないIPアドレスが存在すればいいのですが・・・。

kanzaki様
書きこみの後、自分でもいろいろ読んでブロードキャストでの送信を考えました。
で、やってみたんですがダメでした。
ユニキャストでもダメだしと悩みつつ、
なんとなく隣のPCにpingを打ったらなんと届きませんでした。
端末同士では一切の通信が出来なくなるなんて設定があるかはわかりませんが
確か少し前にこっそりとIPメッセンジャー(おしゃべりが多くなるので社内自粛中)を
立ち上げたら他の人が見えたんですけどね。

しかし、ネットワークのことは、ここで聞く内容でもないと思いますし、
やってて自分があまりに無知だと感じたので、少しネットワークの勉強に出かけてきます。
でもご存知の方いらっしゃいましたらこっそり書きこんでおいてください。



kanzaki

リンク

2007/1/23(Tue) 08:58:26|NO.5028

>なんとなく隣のPCにpingを打ったらなんと届きませんでした。
>端末同士では一切の通信が出来なくなるなんて設定があるかはわかりませんが

確かにHSPに話ではなくなってしまうので、恐縮ですが

考えられる原因としては
PCにインストールされているファイアーウォールソフトの影響か
スイッチの設定で、VLANかフィルタされている可能性がある様な気がします。

ping をした後、arp -a などとして、そのテーブル上に相手がいれば
PCにインストールされているファイアーウォールの挙動と思われます。
逆に存在しなければ、環境に関する制限だと思われます(但し、同じネットワーク上に限る)
ファイルの共有は通るのでしょうか… 
でしたらそれを利用する方法もありますが…怒られてしまうかも



As

リンク

2007/1/23(Tue) 22:35:56|NO.5054

>>職場は人の異動が激しく
その場合はマザーコンピュータにサーバーソフトを入れて
その他のPCにはクライアントを起動させたほうがいいと思いますよ。

前回の回答ではサーバーを持たない直接通信でしたが、
マザーコンピューターを起動することができない環境がないのであれば
サーバー側で全体送信をすればいいかと思います。

ファイアオールが原因の場合はNetBiosの接続を許可する必要があります(自身なし)が、
これはファイアオール設定でいろいろと異なります。

他にもネットワーク接続設定で「TCP/IP」プロトコルがインストールされてなかったり
という場合も。
同じルーターでも設定で別々なセッションごとで区切られていたりと(かなり自身なし)
いう場合も接続できないかもしれません。



kanzaki

リンク

2007/1/24(Wed) 01:31:14|NO.5063

HSPとはかかわりの薄い話題となりますが
もはや私個人として興味の書き込みます。
(興味のない方申し訳ございません。無視していただければ幸いです)



>これはファイアオール設定でいろいろと異なります。
たしかにそのとおりだと思いますが

>ファイアオールが原因の場合はNetBiosの接続を許可する必要があります(自身なし)が、
というのはどのようなことでしょう。
質問者ではありませんが、個人的興味を掻き立てられます。
Netbios over ether を有効にするという事でしょうか?
それともファイアーウォールの設定で、透過にするということでしょうか。
レイヤで言えば、netbiosはセッション層(でしたよね?)なので、
トランスポート層で行う通信の可否に影響するものでしょうか…?
なんらかの出所があればご教示いただけると助かるのですが


>他にもネットワーク接続設定で「TCP/IP」プロトコルがインストールされてなかったり
そうしますと、IPアドレスの設定が出来ませんが
質問の内容から、その可能性は低いのではないかと思われます。

>同じルーターでも設定で別々なセッションごとで区切られていたりと(かなり自身なし)
セグメントではなく、セッションでしょうか???
IPルーターでは、サブネットを分けたりする位ではないでしょうか…(自信なしです)
L2スイッチなら、ポートVLANなどでアイソレートされていることは考えられますね



ONION software Copyright 1997-2021(c) All rights reserved.