JavaでHello World
Google
  HOME  |  基礎  |  掲示板  |  ツール |  書籍  |  デザインパターン  |  リンク  |  フィードバック
JavaでHello World > データグラム編  
メニュー
Home
情報交換掲示板
ツールの部屋
Java関連の書籍
アプリケーション編
Swing編
Swing(イベント)編
Swing(Look&Feel)編
アプレット編
iアプリ編
サーブレット編
サーブレット(Linux)編
サーブレット(web.xml)編
サーブレット(セッション)編
サーブレット(クッキー)編
サーブレット(フィルタ)編
JSP編
JSP(ディレクティブ)編
JSP(アクション)編
JSP(スクリプト)編
JSP(オブジェクト)編
JSP(カスタムタグ)編
JSP(データベース)編
Apache + Tomcat編
Struts編
JDBC編
JDBC(データソース)編
JDBC(MySQL)編
JDBC(PostgreSQL)編
JDBC(トランザクション)編
JavaMail(SMTP)編
JavaMail(POP)編
JNI編
RMI編
RMI(アプレット)編
CORBA編
JNDI編
EJB編
EJB(Entity Bean)編
JMS(PTP)編
JMS(Pub/Sub)編
XML(SAX)編
XML(DOM)編
XSLT編
SOAP編
国際化編
国際化(タイムゾーン)編
国際化(通貨)編
リフレクション編
コレクション編
コレクション(Set)編
コレクション(List)編
コレクション(Map)編
スレッド編
正規表現編
アサーション編
ログ機能編
サウンド編
ファイル入出力編
URL編
ソケット編
データグラム編
HTTP
FTP編
jar編
javadoc編
Ant編
外部コマンド編
プロパティファイル編
システムプロパティ編
Eclipse編
  2003/01/25  田中宏和
データグラム編
◆データグラムとは?
データグラムとはUDPプロトコルで使用するデータの単位、またはデータの転送方式のことです。
◆UDPとは?
User Datagram Protocolの略です。インターネットで使用されている標準プロトコルです。UDPはTCPと異なり、相手と接続を確立しないで、データを相手先に送ります。送信の途中でデータが紛失しても再送しないので相手にデータが届いたかどうかの保証はありません。しかし、その分、TCPより通信速度が速いメリットがあります。この通信を「コネクションレス型通信」と呼びます。
◆TCPとは?
Transmission Control Protocolの略です。インターネットで使用されている標準プロトコルです。TCPはUDPと異なり相手との接続を確立してからデータのやり取りを行います。送信の途中でデータが紛失してもデータの再送を行うので相手にデータが届いたことが保証されます。その分、UDPより通信速度が遅くなります。この通信を「コネクション型通信」と呼びます。この通信の例はソケット編を参照してください。
◆ここでの環境
OS Windows XP
J2SE SDK 1.4.1_01
◆Java実行環境の構築
アプリケーション編を参考にしてJava実行環境を構築してください。
◆データを受信するコードの作成
UDPプロトコルで送られてきたデータを受信するプログラムを作成します。
HelloWorldUDPReceiver.java(ここからダウンロード)
import java.net.*;

public class HelloWorldUDPReceiver {
  public static void main(String[] args) {
    try{
      byte buf[] = new byte[256];
      /** データを受信 **/
      // データグラムソケットを作成(引数にポート番号を指定)
      DatagramSocket socket = new DatagramSocket(5555);
      // 受信するデータグラムパケットを作成
      DatagramPacket packet = new DatagramPacket(buf, buf.length);
      // データグラムパケットを受信します。
      // 受信するとpacketのバッファにデータが格納されます。
      socket.receive(packet);
      // 受信したデータを取得
      String data = new String(packet.getData(),0,packet.getLength());
      System.out.println("\"" + data + "\"を受信しました");
    }catch(Exception e){
      e.printStackTrace();
    }
  }
}
 
◆データを送信するコードの作成
UDPプロトコルでデータを送信するプログラムを作成します。
HelloWorldUDPSender.java(ここからダウンロード)
import java.net.*;

public class HelloWorldUDPSender {
  public static void main(String[] args) {
    try{
      byte buf[] = "Hello World".getBytes();
      /** データを送信 **/
      // データグラムソケットを作成
      DatagramSocket socket = new DatagramSocket();
      // 送信するデータグラムパケットを作成(アドレスとポート番号を指定)
      DatagramPacket packet = new DatagramPacket(buf,
                                                 buf.length,
                                                 InetAddress.getByName("localhost"),
                                                 5555);
      // データを送信します。
      socket.send(packet);
      System.out.println("\"" + new String(buf) + "\"を送信しました");
    }catch(Exception e){
      e.printStackTrace();
    }
  }
}
 
◆コンパイル
コマンドプロンプト
C:\JavaHello\Datagram>javac HelloWorldUDPSender.java HelloWorldUDPReceiver.java

C:\JavaHello\Datagram>

◆データを受信するプログラムの実行
まず、データを受信するプログラムを実行します。
コマンドプロンプト
C:\JavaHello\Datagram>java HelloWorldUDPReceiver
カーソルが点滅状態になり、クライアントからデータが送られてくるのを待っている状態になります。
◆データを送信するプログラムの実行
新しいコマンドプロンプトを立ち上げてデータを送信するプログラムを実行します。
コマンドプロンプト

C:\JavaHello\Datagram>java HelloWorldUDPSender
"Hello World"を送信しました

C:\JavaHello\Datagram>

データが送れたようです。データを受信するプログラムを実行したコマンドプロンプトを見てみます。
コマンドプロンプト

C:\JavaHello\Datagram>java HelloWorldUDPReceiver
"Hello World"を受信しました

C:\JavaHello\Datagram>

おおおお!データを受信できましたね!
 
■関連
ソケット編
■書籍
Java関連の書籍

 
  ネットで買えば断然お得!お買い物なら楽天市場
ツールの部屋 - Java関連の書籍 - デザインパターン - 情報交換掲示板 - HOME