空川幸司

Download Report

Transcript 空川幸司

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

ご清聴ありがとうございました