• 締切済み

TCP,UDPの通信プログラム

TCPを用いた通信とUDPを用いた通信の二つのプログラムを作っています。 質問なんですが、送信元のアドレスを表示するとき getInetAddress() getAddress() の二つがあると思うのですが、この二つにはどのような違いがあるのでしょうか?

  • Java
  • 回答数2
  • ありがとう数2

みんなの回答

  • prophetok
  • ベストアンサー率44% (13/29)
回答No.2

デバッガで、それぞれのメソッドが、どのような内容の値を返すか、調べてみましたか? 失礼ながら、そのレベルで通信のプログラミング云々は時期尚早かと。 もう少し勉強して、JAVAの基本を理解して上で再度試みた方がよろしいかと思います。

sobuhire
質問者

お礼

再度有難うございます。 大学の講義にて質問されたことで、仰るとおりまだプログラミングを始めてあまり日が経っていません。 暇ある時に基本から学んでみようと思います。

  • prophetok
  • ベストアンサー率44% (13/29)
回答No.1

まず、それぞれどのクラスのメソッドなのか? それぞれ、Socket,InetAddressだとして public InetAddress getInetAddress() public byte[] getAddress() それぞれ、返す型が違いますが、それは理解した上で違いが分からないのですか?

sobuhire
質問者

お礼

回答有難うございます。 勉強不足ですいません、その返す型の違いがよくわかりませんでした。

関連するQ&A

  • TCPとUDP

    この度、友達よりインターネットの通信方法は TCPとUDPがありプログラマによって選択ができる と聞きました。 そこで、TCP通信が体験できたりUDP通信が体験 できるソフトウエアとかwebサイトはありますか? あったら教えてください。

  • TCP及びUDP通信について

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

  • winsockを使ったTCP及びUDP通信について

    今回winsockを使った通信プログラムを組む事になったのですが、わからない点が多々ありましたので、どなたかご教授頂けると大変ありがたいです。 1. TCP通信において、送信側が"Hoge" "Fuga"と2回sendした際、受信側でrecvすると"Ho" "geFu" "ga"と3回受信する可能性があると認識しているのですが、これは正しいでしょうか? (到着する順序は保証されるが、recvする際に送信側がどのようにsendしたかは考慮されない) 2. UDP通信においては、上記のような現象は起きないと認識しているのですが、これは正しいでしょうか? (UDP通信では、2回sendすれば2回以上はrecvしない。パケットの破棄はあっても、分割はない) 3. もしUDP通信でも上記のような現象が起きる場合、到着順序の保証がされないという観点から、recvした際に"Ho" "ga" "geFu"と受信する事はあり得るのでしょうか? 4. 2が正しい前提での話です。UDP通信では、MTUを超えた場合、自動でパケットが分割されると聞きました。プログラムを組む際、これは意識しないといけないのでしょうか? (MTUが1500Byteの場合、UDPで2000Byteをsendすると、recvで1500,500と2回受信する?) 以上の4点です。 どなたかご存知の方いらっしゃいましたら、是非ご教授ください。

  • C#でUDP通信

    C#でネットワークプログラミングを行いたいと思っています。 使用するプロトコルはUDPです。 TCP通信の参考書やwebページは見掛けるのですが UDPに関する資料はなかなか見つけることができません。 コーディングする上で、 TCP通信のプログラムをどのように変えたらよいのか 教えてください。 ちなみに、Windowsで開発する場合は WINSOCKを使ったほうがよろしいのでしょうか。

  • MATLABを用いたUDP通信のプログラム作成

    MATLABを用いたUDP通信のプログラム作成のことで教えてください。 Windows10のパソコンのキーボードから文字列を入力し、 UDP通信で文字列を渡し、この値をパソコンの画面上に表示させる MATLABプログラム(Simulinkは使 用しない)を書こうとしています。 ・どのように書けばよいか教えてください。 ・また、この場合、ホストアドレス(127.0.0.1 ?)やポート番号をどのように設定すればよいでしょうか? ・さらに、このMATLABプログラムをC言語に変換してテストしたいです(MATLAB Coderを使用) 通信分野については、ほとんど知りません。 宜しくお願い致します。

  • POP3は、TCPそれともUDPのどちらのでしょうか?

    シスアドの勉強をしていて、どちらが正解なのかわからないので、技術のプロの方に質問をさせて頂きます。 POP3の説明を読んでいると、本によってUDPやTCPなど、表現がまちまちでどちらが正解なのか困っております。 また、ホームページで検索すると、POP3にはUDP・TCPの両方があるみたいな、書き方をしてるとこともありました。 結局、POP3は、UDPとTCPでは、どちらが一般的な正解なのでしょうか?

  • TCP接続、UDP接続って?

    PC初心者で、最近あるプログラムのネットワークに直接接続したいんですけど、TCP接続を受け付けることができない、UDP接続を行うことができない、という理由で直接接続できないって表示されます。私にはその意味が分かりません。もしよければどういうことなのか教えてください。。

  • 80番ポート(TCP,UDP)の意味

    パケットフィルタリングの設定のために、許可するプロトコル/ポートを調査しています。 Wikipedia「TCPやUDPにおけるポート番号の一覧」によると、「80/TCP,UDP」のようにTCPとUDP両方記載されているものがあります。 私は80番ポート(HTTP)はTCPのみ使用していると思っていましたが、この表記によるとUDPも使用していると解釈できます。 80番ポートに限らず、22(SSH)、25(SMTP)なども同じ表記となっていますが、これはどういう意味なのでしょうか? 個人的には以下の3パターンのいずれかに分類されるのではと考えています。 ■80(HTTP)を例にとったパターン 1.HTTP通信はTCP、UDPどちらのプロトコルでも使用可能 (ソフトウェアはどちらのプロトコルが来ても対応できる) 2.HTTP通信はTCP、UDPの両方を使用している (ソフトウェアが必要に応じてプロトコルを使い分けている) 3.HTTP通信をTCP、UDPのどちらで実装するかはソフトウェアによって異なる ポートによって上記パターンのいずれになるかは異なりと考えられますので、TCPとUDP両方記載されているものは、両方セットでフィルタに設定しようと考えていますが、その判断について基準などがあればご教示をお願いいたします。

  • UDPを使って通信速度測定プログラムを作成

    java eclipse3.5を使って通信のプログラムを作っています。 TCPの通信速度計測プログラムはWebサイトのソースを参考にして、自分で作りました。 次は、UDPの通信速度計測プログラムを作りたいのです。 TCPでは、送信側で送信データを作成して、受信側で時間を測ります。 データの作成方法と、時間の計測方法は次のようにしています。 送信側: for (int i = 0; i < data - 2; i++) { out.write('X'); } out.write('\\'); out.write('s'); out.flush(); int recvMicroSecond = Integer.parseInt(in.readLine()); System.out.println(data + "バイトを送信するのに" + recvMicroSecond + "マイクロ秒かかる。"); System.out.println(); 送信側で作成したデータ:XXXX…XX\\s 受信側では、最初のXを読み込んだ時点で時間の計測を開始し、sを読み込んだら計測時間をストップして、計測時間を測っています。 UDPでも送信側でこのようなデータをバッファに格納して、 受信側でバッファ内の文字を読み込んで時間の計測を行いたいのですが、 どのクラスの、どのメソッドを使ったらよいか分かりません。 どなたか、よい方法を知りませんか?

    • ベストアンサー
    • Java
  • ルーターを介したTCPとUDP通信の違いについて

    端末1---(LAN側)ルーター(WAN側)---端末2 というふうに接続されていた場合を想定します。 上図で端末1がTCPセッションを端末2と張ろうとした場合(httpなど)のルーターの動きについて確認させてください。 <ルーターの動き> (1)端末1からのTCPセッション開始のパケットを受信す るとMACアドレスとIPアドレスをルーターのものにす り替え、ポート番号も変えて端末2に渡す。この時の アドレスとポート番号の対応表を記憶しておく。 (2)端末2から応答が返ってきた場合(1)で記憶した対応表 を基にパケットのMAC,IP,ポートをすり替えて端末1 に渡す。 (3)TCPのセッションが終了したら(1)で記憶した対応表は 破棄する。 とりあえずこの解釈は正しいでしょうか? なお、UDP通信の場合は(1)の対応表を全く作らないということで良いでしょうか? ご教授よろしくお願いします。

専門家に質問してみよう