第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個
--------------------------------------------------