2016-08-04 8 views
0

私はノードjsのTCPを使用して複数のRaspberry PIを制御するために使用しているマスターサーバーマシン(Windows 10)を持っています。ノードJSのサーバーにTCPクライアントのホスト名を送信

各pi(pi-001.local、pi002.local、pi003.localなど)のホスト名をサーバーに送信する最も良い方法は何でしょうか。サーバー上でsocket.remoteAddressを実行している

は、クライアントのIPを返しますが、私はホスト名を必要とするもの

はもちろん、各piはos.hostname()方法 を使用して、独自のホスト名を解決することができますが、私は追跡し、どのようなホスト名を知っておく必要があります各net.Socketオブジェクトは、サーバー側に関連付けられています。

socket.write(os.hostname())で送信するよりも良い方法はありますか?

ありがとうございました!

答えて

1

TCPサーバが使用するDNSサーバがPIデバイスのホスト名を認識している限り、接続ごとにTCPサーバが逆引き参照をsocket.remoteAddressにするだけです。ノードでこの逆引き参照を行うには、dns.reverse()を使用します。

+0

私はお試しいただきありがとうございます! – yurikleb

+0

これは、マスターマシンにDNSサーバーをセットアップする必要があることを意味しますか?私のルーターは現時点ではpiホスト名を認識していないようだから、 'dns.reverse()'は現時点では 'undefined'を返します。 'dns.lookup( 'pi000001.local、...)'を実行するとIPアドレスが取得されます ごめんなさいネットワークの仕組みに少しばかりです – yurikleb

0

これはSMTPプロトコルで既に行われています。これは、TCPネゴシエーションに使用するのに適したモデルです。アプローチのこのタイプを使用して、彼らはサーバーに接続するとき、あなたのパイのはどうしたら最初の事はあなたのサーバーは、常にそれぞれとパイからアップフロント情報を見込んでそのように...

HELO pi00001.local

を書きです接続または再接続。

+0

おかげさまで!私は本当に基本的なコミュニケーションに固執したいと思っているので、SMTPを使うのはちょっとしたことかもしれないと思います。 – yurikleb

+0

私は、SMTPプロトコル全体を実装していないHELO部分を意味します;) – Brandon

+0

は、接続時にクライアントからのホスト名の値を持つ単純な "Hello"文字列を送信することになりました。ありがとう! – yurikleb

関連する問題