第12回独習Javaゼミ 直江担当演習問題
解答例
--------------------------------------------------
問1

//	送信側プログラム
import java.net.*;

public class test1 {
	static public void main(String args[]){
		byte buffer[]=new byte[2] ;
		if(args.length<2){
			if(args.length<3){
				buffer[1]=1 ;
			}
			buffer[0]=1 ;
		}
		else{
			buffer[0]=Byte.valueOf(args[1]).byteValue() ;
			buffer[1]=Byte.valueOf(args[2]).byteValue() ;
		}
		try{
			InetAddress ia=InetAddress.getLocalHost() ;
			int port=Integer.valueOf(args[0]).intValue() ;
			DatagramSocket ds=new DatagramSocket() ;
			DatagramPacket dp=new DatagramPacket(buffer,buffer.length,ia,port) ;
			ds.send(dp) ;
			ds.close() ;
		}
		catch(Exception e){
			e.printStackTrace() ;
		}
	}
}

//	受信プログラム
import java.net.*;

public class test2 {
	static public void main(String args[]){
		byte buffer[]=new byte[2] ;
		int port=Integer.valueOf(args[0]).intValue() ;
		String you="" ;
		try{
			DatagramSocket ds=new DatagramSocket(port) ;
			DatagramPacket dp=new DatagramPacket(buffer,buffer.length) ;
			ds.receive(dp) ;
			InetAddress ia=dp.getAddress() ;
			you=ia.toString() ;
			ds.close() ;
		}
		catch(Exception e){
			e.printStackTrace() ;
		}
		System.out.println("ただ今使用中のポート..."+port) ;
		System.out.println("送信側のアドレス..."+you) ;
		System.out.println("送られてきた数値データ...") ;
		System.out.println("a..."+buffer[0]+" , b..."+buffer[1]) ;
		System.out.println("a+b="+(buffer[0]+buffer[1])) ;
		System.out.println("a-b="+(buffer[0]-buffer[1])) ;
		System.out.println("a*b="+(buffer[0]*buffer[1])) ;
		System.out.println("a/b="+(buffer[0]/buffer[1])) ;
	}
}

[出力結果](送信側入力:4321 20 10),(受信側入力:4321)
(受信側プログラムの出力)
ただ今使用中のポート...4321
送信側のアドレス.../192.168.1.201
送られてきた数値データ...
a...20 , b...10
a+b=30
a-b=10
a*b=200
a/b=2
--------------------------------------------------
問2

import java.net.*;
import java.io.*;

public class test3 {
	static final int Maximum=1024 ;
	static public void main(String args[]){
		if(args.length==0){
			System.out.println("URLを入力してください...") ;
			System.exit(0) ;
		}
		String catch_data="" ;
		try{
			URL url=new URL(args[0]) ;
			InputStream is=url.openStream() ;
			byte buffer[]=new byte[test3.Maximum] ;
			int i=0 ;
			while((i=is.read(buffer))!=-1){
				String temp=new String(buffer,0,i) ;
				catch_data+=temp ;
			}
		}
		catch(Exception e){
			e.printStackTrace() ;
		}
		int count=0,temp=0 ;
		while((temp=catch_data.indexOf("<br>",temp+1))!=-1){
			count++ ;
		}
		System.out.println("GoogleサイトTopに使われる") ;
		System.out.println("<br>タグの数は..."+count+"個") ;
	}
}

[出力結果]
GoogleサイトTopに使われる
<br>タグの数は...7個
--------------------------------------------------