Download presentation
Presentation is loading. Please wait.
1
UDPマルチキャストチャット 空川幸司
2
前回までのあらすじ TCPとUDPの違い FTPサーバについての勉強
3
スライド一覧 パケットの配送方式の説明 UDPパケット送信プログラム UDPパケット受信プログラム プログラムの実行画面
プログラムの主要部分の説明 参考文献
4
ユニキャスト
5
マルチキャスト
6
UDPパケット送受信プログラム ポート番号 10007 マルチキャストアドレス 224.0.0.1 クラスDアドレス
ポート番号 10007 マルチキャストアドレス クラスDアドレス 上位4ビットが“1110”で始まる ~ そのうち ~ はTTLが1に設定されて送信されるのでルータによって転送されることがない
7
import java. net. ; import java. io
import java.net.*; import java.io.*; public class MulticastSender { public static void main(String args[]) { int PORT = 10007; String multicastAddress = “ ”; 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)); 送信プログラムその1
8
String message; while ((message = keyIn. readLine())
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("接続終了"); } } その2
9
import java.net.*; import java.io.*; public class MulticastReceiver { public static void main(String args[]) { int PORT = 10007; String multicastaddress = “ ”; 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を起動しました”); 受信プログラムその1
10
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); } } } その2
11
送信画面( ) 受信画面
12
送信画面( ) 受信画面
13
InetAddress chat = InetAddress.getByName(multicastaddress)
MulticastSocket socket = new MulticastSocket(PORT) マルチキャストソケットの作成にはポート番号を指定 Socket.joinGroup(chat) 作成したマルチキャストソケットとjoinGroupメソッドを使って、マルチキャスト通信に参加
14
DatagramPacket packet = new DatagramPacket(bytes,bytes
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メソッドを使って受信します
15
次にやっていくこと GUIでの機能の追加 オブジェクト指向でのプログラミング チャットソフトとして機能できるように作る
16
参考文献・サイト 基礎からわかるTCP/IP Javaネットワークプログラミング 第2版 小高知宏 TECHSCORE
17
ご清聴ありがとうございました
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.