• 締切済み

UDP通信でのポート

javaを使ってUDP通信を行います。 映像データと音声データの2つのデータが あります。 以下のようなことは可能ですか? (図の説明)AからBへデータを送信します。 Aのポートは1500番を使って映像データを 送信します。と同時に、同じ1500番を使って 音声データは送信できますか? 同一ポートで複数データを送信できるか知りたい です。 (このままだと、いくつもポートをあけるため データのタイムラグありすぎて使い物になりません。。 ) もしくは、1つのポートでデータの送受信が できるか知りたいです。 なにかヒントになるようなことでもいいので 教えてください。よろしくお願いします。    A ------------------------> B (1500) 映像データ送信  A ------------------------> B (1500) 音声データ送信

noname#2205
noname#2205

みんなの回答

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.4

>Cだったら、こういったこと、 >(映像、音声のデータ通信、テレビ会議システム) >はできるんでしょうか? 多分、既存のシステムはどうせCかC++だろうとは思います。 >また、通信速度、実際のクライアントでの >映像の表示速度についてはどうですか? 通信速度の上限はすぐにわかりますから、 実際はそれより大幅に低くなることを考えて、 実際に転送可能なデータを考えて、 それでなんとかすることを考えるでしょう。 また、UDPを使うならプロトコルのヘッダ等の 管理情報があるので、実際に送れるデータサイズについても考慮する必要がありますし。 まあ、実際はどうやって通信に必要なデータを小さくするかに尽きる気がします。 多分、こういう速度の限界に関わることを考えるなら、 IPパケットとかUDPパケットがどうなっているかとか、 Ethernetはどうやって通信しているかとか そういった知識がないと難しいかも知れません。 当然、速度を考える場合は通信経路として何を想定しているかにも関わってきますが。 具体的に何をしようとしているのかわかりませんので、 この程度の話が限度です。 まあ、これ以上難しい話ができるかどうかは不明です(笑) ボロがでそう。

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.3

>JMF APIを使ってやろうとしているのですが、 そういうことは最初にはっきりと書いた方がいいですよ。 とりあえず、 http://java.sun.com/products/java-media/jmf/2.1.1/apidocs/ 見てみましたが、何をどう使っているのか探すのが面倒なので止めました(^^; 実際に使った、サンプルや作ったソースを置いた方が回答も得やすいとおもいます。 ちなみに、私はJAVAはほとんど知りませんので、 あまり回答は期待できませんが(^^;; UDPの問題ならわかるかと思って書いていたもので・・。 Cでなら何度も使ってますので。 >Jarファイルであるため実装が明らかで >ないのです。 http://java.sun.com/products/java-media/jmf/index.html には,JMFのソースがあるようです。

noname#2205
質問者

補足

回答ありがとうございます。 >http://java.sun.com/products/javamedia/jmf/index.html >には,JMFのソースがあるようです。 はい。しかし、実装してあるソースは 一部分だけでした。 (実装がないソースも多い。) JMFに対しての情報量が極端にすくないですね。 Cだったら、こういったこと、 (映像、音声のデータ通信、テレビ会議システム ) はできるんでしょうか? また、通信速度、実際のクライアントでの 映像の表示速度についてはどうですか? つなぐ台数にもよるのでしょうが。。。 もしよかったら教えてください。

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.2

同じポート自体は複数同時に使えませんから、 自分で区別がつくように情報を付加して送るしかないでしょうね。 例えば,一度に送るデータは1400バイトと決めておいて, 先頭に識別用のデータを追加して、それで音声データか 映像データか区別する。 但し、現状でタイムラグがありすぎて使えないなら、 さして変わらないように思いますが。 ポートが複数あろうが、一つであろうが物理的には 同じ所を伝わるわけですし、厳密な意味での同時は不可能です。 同時という意味なら、別々なポートを使い、物理的に別な経路で送る方がはるかに近いですね。 具体的にどんなこと、どうやって実現しているのかわからないのでなんとも言えませんが・・・。

noname#2205
質問者

補足

回答ありがとうございます。 すみません。同時、というのは間違えました。 単一ポートでの複数データの通信、という ことを質問しました。 JMF APIを使ってやろうとしているのですが、 JMFの中の処理でセッションのオープン等は やっているため、今ひとつ、どうやって 同じポートでデータの通信を行っていいのか わかりません。。。 既存のサンプルを動かすと 最初に1500番ポートを使ってオープンし、 次にまたオープンをかけてしまうようなので Can't openというエラーがでます。 が、Jarファイルであるため実装が明らかで ないのです。

  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.1

質問の趣旨が読み取れていないかもしれませんが… UDPは“基本的に”データグラムごとに通信を確立し切断します。 結果、1回の送信データグラム内に多種類のデータを詰め込む以外に多種類のデータを単一ポートで(同時に)送る手段は無いはずです。 また、送信と受信では別の通信単位になりますので、「1つのポートで(同一通信単位内で)データの送受信」という状況はありえません。

noname#2205
質問者

補足

回答ありがとうございます。 書き方が悪かったようです。 多種類のデータを単一ポートで送る手段を 質問しました。 同時に、というのは間違えました。 同時じゃなくていいです。

関連するQ&A

  • UDPの宛先ポートと送信元ポートについて

    はじめまして。 UDPで通信を行うアプリケーションを設計しているのですが、そこで質問があります。 送信元ポートと宛先ポートの番号が同じでも問題ないのでしょうか? 機器A-機器Bで通信をする場合、機器A宛てのフレームのデータが 宛先ポート10000、送信元ポート10000でも問題はない?ってことです。 待ち受けるポート番号は10000で固定として送信元が同じ10000となって しまってもいいのでしょうか?

  • UDP通信について

    はじめまして。 UDPの通信について教えて下さい。 送信元ポートと宛先ポートについてです。 機器A-機器Bで通信をする場合です。 両方の機器で同じアプリ(ポート番号10000)が起動しているとします。 機器Aから機器Bのアプリに対してフレームを送信した時、 送信元ポートはランダムな値(仮:5000)で宛先ポートは10000になると思います。 機器Bでフレームを受信した後、応答フレームを送信する時には 送信元ポート10000、宛先ポート5000になると思います。 機器Aで起動しているアプリのポート番号は10000ですので機器Bからの応答フレームの宛先ポート5000とは一致しません。 この場合、どのようにソフトは判断しているのでしょうか? 組み込みで評価ボードに同じアプリを実装してお互いに通信させるのが 目的です。

  • UDPポートとTCPポートの設定方法

    EchoLinkというインターネットを使ったアマチュア無線(無線というのかどうか・・・?)を使うための通信の設定として、以下のような指示があるのですが、私の家のインターネット環境において、何をどう設定すればよいのかわからないので、教えてください。 UDPの5198と5199ポートの送受信と、TCPの5200ポートの送信を通過(許可)させる必要があるため,ルータのフィルタリング機能を以下のように設定する。  TCPの5200ポートの送信を通過(許可)する  UDPの5198ポートおよび5199ポートの送受信をそれぞれ通過(許可)する 私のインターネット環境は、マンションの常時接続契約で、建物までは光ファイバー、棟内はVDSLで、部屋のLAN端子に接続しています。自分でセットしたルーター等はありません。

  • TCP及びUDP通信について

    TCP及びUDP通信について 現在WinSockAPIを用いた通信を行うプログラムを組んでいます。 しかしながらネットワークに関しては初心者で、わからない点がいくつか出てきたので質問させて頂きます。 -------------------------------------------------- 1.TCPで双方向通信を行う場合、サーバ側は指定したポートにbind→listenし、接続を待ち受けます。 クライアント側はサーバのIPを指定し、接続確立後にポートはOSが自動で割り振ると聞きました。 つまり、クライアント側がポートを開放せずに通信が出来るのは、OSなどが自動でポートを割り当て、割り当てたポートに到着したデータを該当アプリケーションに渡すからでしょうか? ポート関連は全てルータが管理しているものだと思っていたのですが、OSがポートを割り当てるという動作がよく理解できません。 -------------------------------------------------- 2.UDPで双方向通信を行う場合、端末A・端末Bともに指定したポートにbindする必要があると聞きました。 つまり、UDPで双方向通信を行う場合、端末A・端末Bの双方でポートを開放する必要があるということでしょうか? -------------------------------------------------- 是非ともご教授ください。

  • UDPのデータ転送について

    UDPを使用してデータの送受信をしたいのですが おおまかな原理は把握したのですが データを送信するためのツールなど基本的に どう送信するかなどがよくわかりません どなたか適当な参考文献やサイトなどがあったら教えて頂けないでしょうか

  • JavaからC構造体にパケット通信する方法

    ネットワークプログラミングの初心者です。 現行のシステムがC言語で実装されているUDP送受信アプリに対して、 この度、Javaクライアントでも連携をおこなうことになりました。 しかし、現行のシステムはクライアントとサーバ間でC構造体をUDPにて送受信しています。 JavaでC構造体と同様のデータを作成しUDP送信、またサーバからUDP受信したデータをJavaで使用できる型変換する方法はありますでしょうか。 JNIやJNAを使用しない方法で、ご教授いただけますでしょうか。 以下にC構造体の例を記載いたします。 typedef struct udp_data { long b_type; long a_type; char userid[128]; char passward[128]; } UDP_DATA;

    • ベストアンサー
    • Java
  • WinSockを用いたUDP送受信ソケットプログラミングについて

    こんにちは。 現在、VC++.NETでWinSockを用いたUDPソケットプログラミングを行っています。以下のようなプログラムを作りたいと思っているのですがうまく動作しません。 [概要] A:送信端末 B:受信端末 1.Aから文字列"send"をB端末へ送信。 2."send"を受信した受信端末Bは、A端末へ文字列"ok"を送信。 この1と2の動作を行わせたいと思っています。この場合、A,B端末は送信と受信を行う必要があります。 [問題点(うまくいかない点)] A→Bへ"send"は送信でき、B端末で受信できるのですが、B端末からA端末へ送信できません。B端末で送信できているのか、それともA端末で受信できていないのか?が分からない状態です。 [気づいた点] ポート番号を分ける必要があるのでしょうか?例えば、A→Bへは9000番。B→Aへは9001番という意味です。 送信と受信を行うため、送信・受信で2つのUDPソケットを使用する必要があるのでしょうか?例えば、 s1 = socket(AF_INET, SOCK_DGRAM, 0);←送信に利用 s2 = socket(AF_INET, SOCK_DGRAM, 0);←受信に利用 よろしくお願いします。

  • UDPについてこの解釈で合っていますか?

    UDPについてよく分からなくなってしまいました。 今まで 連続したABCというデータを送信すると その時によってAB CやA B Cのように分割されて送信される。 受信側にはABCと受信することもあればCAと受信するようなこともある という解釈をしていました。 しかし、いろいろなサイトを見て回っているうちに断片的な情報から以下のような解釈なのでは、と思いましたがこちらで正しいのでしょうか?それとも上記のような解釈で正しかったのでしょうか? データA、B、Cという3種類のデータを順に送信すると ネットワーク上でA1 A2 A3、B1 B2、C1 C2 C3 C4とそれぞれ分割された。 受信側はCAという順でデータを受け取った(Bはロスト) また、もしこちらが正しいとすると、 A1 A3 A2と受信することはないのか(あってもちゃんとA1 A2 A3と並び替えられるのか) B1はロストでB2受信の場合Bは受信失敗となるのか否か こちらも教えてください。

  • ポート1900について

     OutPostのAllowedを見るとUndefined RuleでSVCHOST.EXEが1900のポートで送受信しています。それなのに[netstat -an]で見ると1900番のForeign Addressは*:*となっています(UDPはつながっていてもForeign Address表示されないのですか?)  ポート塞いだほうがいいでしょうか? ちなみにSVCHOST.EXEはすでにルール作ってあります。

  • UDPデータ通信中の認識方法

    はじめまして。 表題の件について教えて下さい。 機器Aと機器BでUDPデータの通信をしている場合(機器Bのファイルを機器Aに転送しているとか)に受信側の機器Aはデータを受信している最中であるとどうやって認識しているのでしょうか? TCPだと最初にコネクションを確立して最後にコネクションを切断するのでデータ受信開始、受信中、受信完了はコネクション情報で確認できると思うのですが、UDPではコネクション確立がないのでTCPでのデータ受信開始、受信中、受信完了をどうやって識別しようか迷っています。 UDPでデータを受信している最中にLANケーブルを抜かれたらエラーとしたいのです。 その為に受信中であることを知りたいのですが。。。。