2

私は潜在的にネットワーク経由でパケットまたは何らかの要求を送信しようとしていますが、具体的なものではありません。マシンまたは複数の可能性のあるマシンには、この特定のパケットまたは要求をリッスンして応答するソフトウェアがインストールされています。メインフレーム サーバーは、作業を共有するサーバーの数が x であることを認識します。

この種のことを実現するために、何らかの形式の UDP ブロードキャストまたは TCP パケットを使用できますか? これを行うには C# .NET を使用します。

この問題の最終的な結果は、実行するタスクを持っているが、可能な場合は複数のマシンでワークアウトを共有したいが、それらについて何も知らないメイン サーバーを持つことです。「私はいくつかの作業を行う必要があります」というリクエストを送信し、マシンは「私は自由です」+ IPアドレスなどで応答し、メインマシンはTCP接続を使用して作業を配信できます(私は簡単にこの部分を達成できます) . ネットワークを介して最初のブラインド リクエストを行うだけです。

メインマシンがすべてのワーカーを認識できるように別の方法を見つけなければならない場合は、それが理にかなっていることを願っています。

ありがとう

スティーブ

4

3 に答える 3

5

TCP の代わりに UDP で十分に達成されるマルチキャストを実行したいようです。

あなたがそのようなことをする方法を説明している記事を見つけました。

http://www.codeproject.com/Articles/1705/IP-Multicasting-in-C

于 2012-09-18T19:09:15.883 に答える
3

TcpClientクラスに基づいて、このコードで試すことができます

            TcpClient tcpclnt = new TcpClient();
            Console.WriteLine("Connecting.....");

            tcpclnt.Connect("...",8001);
            // use the ipaddress as in the server program

            Console.WriteLine("Connected");
            Console.Write("Enter the string to be transmitted : ");

            String str=Console.ReadLine();
            Stream stm = tcpclnt.GetStream();

            ASCIIEncoding asen= new ASCIIEncoding();
            byte[] ba=asen.GetBytes(str);
            Console.WriteLine("Transmitting.....");

            stm.Write(ba,0,ba.Length);

            byte[] bb=new byte[100];
            int k=stm.Read(bb,0,100);

            for (int i=0;i<k;i++)
                Console.Write(Convert.ToChar(bb[i]));

            tcpclnt.Close();
于 2012-09-18T19:11:16.390 に答える
1

ZeroConf (別名Apple Bonjour、Apple には Windows 用の Bonjour SDK があります) の使用を検討することができます。ZeroConf/Bonjour の一部はサービス ディスカバリです。RFC は次のとおりです。

これらの RFC は両方とも IETF Proposed Standards です。

ウィキペディアの記事は次のとおりです。 http://en.wikipedia.org/wiki/Zero_configuration_networking

また、 Daniel Steinberg と Stewart Cheshire によるO'Reilly の書籍、Zero Configuration Networking: The Definitive Guideには、関連する情報のほとんどが 1 か所にまとめられています。

ブックカバー

于 2012-09-18T22:18:55.247 に答える