このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1335517816/790
#  1] 授業単元:ネットワーク 
#  [2] 問題文: 
#  マジックパケットを送信するソフトを作成せよ 
#   

マジックパケットを送信する(_ブロードキャストアドレス,_Macアドレスの文字コードならび) :-
        マジックパケットの送出開始(_ブロードキャストアドレス,Socket,Instream,Outstream),
        '0xffを6回送出する'(Outstream),
        'MACアドレスを16回送出する'(Outstream,_Macアドレスの文字コード),
        マジックパケットの送出終了(Socket,Instream,Outstream).

マジックパケットの送出開始(_ブロードキャストアドレス,Socket,Instream,Outstream) :-
        socket(unix,stream,Socket),
        socket_connect(Socket,_ブロードキャストアドレス : 7),
        open(Socket,read,Instream),
        open(Socket,write,Outsteam).

'0xffを6回送出する'(Outstream) :-
        put_codes(Outsteam,[255,255,255,255,255,255]).

'MACアドレスを16回送出する'(Outstream,_Macアドレスの文字コード) :-
        for(1,N,16),
        put_codes(Outsteam,_Macアドレスの文字コードならび),
        N = 16.

マジックパケットの送出終了(Socket,Instream,Outstream) :-
        close(Instream),
        close(Outstream),
        socket_shutdown(Socket).

put_codes(_,[]) :- !.
put_codes(Outstream,[Code|R]) :-
        put_code(Outstream,Code),
        put_codes(Outstream,R).