UDPマルチキャストチャット 空川幸司 前回までのあらすじ TCPとUDPの違い FTPサーバについての勉強 スライド一覧 パケットの配送方式の説明 UDPパケット送信プログラム UDPパケット受信プログラム プログラムの実行画面 プログラムの主要部分の説明 参考文献 ユニキャスト マルチキャスト UDPパケット送受信プログラム ポート番号 10007 マルチキャストアドレス 224.0.0.1 クラスDアドレス 上位4ビットが“1110”で始まる 224.0.0.0~239.255.255.255 そのうち224.0.0.0~224.0.0.255はTTLが1に 設定されて送信されるのでルータによって転 送されることがない 送信プログラムその1 import java.net.*; import java.io.*; public class MulticastSender { public static void main(String args[]) { int PORT = 10007; String multicastAddress = “224.0.0.1”; byte[] buf = new byte[1024]; try { MulticastSocket socket = new MulticastSocket(PORT); InetAddress chat = InetAddress.getByName(multicastAddress); socket.joinGroup(chat); BufferedReader keyIn = new BufferedReader(new InputStreamReader(System.in)); その2 String message; while ((message = keyIn.readLine()).length() > -1) { byte[] bytes = message.getBytes(); DatagramPacket packet = new DatagramPacket(bytes,bytes.length,chat,PORT); socket.send(packet); if(message.equals("quit")) { MyException e = new MyException(); throw e; } } } catch (Exception e){} } } class MyException extends Exception { MyException() { System.out.println("接続終了"); } } 受信プログラムその1 import java.net.*; import java.io.*; public class MulticastReceiver { public static void main(String args[]) { int PORT = 10007; String multicastaddress = “224.0.0.1”; byte[] buf = new byte[1024]; DatagramPacket packet = new DatagramPacket(buf,buf.length); try { MulticastSocket socket = new MulticastSocket(PORT); InetAddress chat = InetAddress.getByName(multicastaddress); socket.joinGroup(chat); System.out.println(“MulticastRecieverを起動しました”); その2 while(true) { socket.receive(packet); String message = new String(buf,0,packet.getLength()); System.out.println(packet.getSocketAddress()+ “:”+message); if(message.equals(“quit”)) { System.out.println(“相手が接続を終了しました”); } } }catch (Exception e) { System.out.println(e); } } } 送信画面(150.43.244.114) 受信画面 送信画面(150.43.244.122) 受信画面 InetAddress chat = InetAddress.getByName(multicastaddress) chatでマルチキャストアドレスを指定するよう にします MulticastSocket socket = new MulticastSocket(PORT) マルチキャストソケットの作成にはポート番号 を指定 Socket.joinGroup(chat) 作成したマルチキャストソケットとjoinGroupメ ソッドを使って、マルチキャスト通信に参加 DatagramPacket packet = new DatagramPacket(bytes,bytes.length,chat,PORT); Socket.send(packet); このUDPデータグラムをsendメソッドでマルチキャスト ソケットに送ります DatagramPacket packet = new DatagramPacket(bytes,bytes.length); socket.receive(packet); 受信の場合は受け取る準備をするので 受け皿を用意し、receiveメソッドを使って受信します 次にやっていくこと GUIでの機能の追加 オブジェクト指向でのプログラミング チャットソフトとして機能できるように作る 参考文献・サイト 基礎からわかるTCP/IP Javaネットワークプロ グラミング 第2版 小高知宏 TECHSCORE http://www.techscore.com/index.html ご清聴ありがとうございました
© Copyright 2024 ExpyDoc