このディレクトリの索引

http://pc12.2ch.net/test/read.cgi/tech/1260532772/94 
#  [1] 授業単元: 通信プロトコル 
#  [2] 問題文(含コード&リンク): 
#  http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10268.txt 
# tcpを用いて21個石がある中から1〜3個の石をServer、Clientで取り合い、 
# 最後の1つを取った方が負けとなる石取りゲームを作りなさい。 
# server、clientの処理、および使用するポートは自由に決めて構わない。

クライアント一般型(Server,Port,_述語名,_受け取った情報) :-
    socket(internet, stream, Socket),
    socket_connect(Socket, Server : Port),
    open(Socket,read,Input),
    open(Socket,write,Output),
    クライアント一般型_1(Input,Output,_述語名,Line).

クライアント一般型_1(_,Input,Output,_述語名,_受け取った情報) :-
    get_line(Line),
    クライアント一般型_2(Input,Output,Line,_述語名,_受け取った情報).
クライアント一般型_1(Socket,Input,Output,_,_) :-
    close(Input),
    close(Output),
    socket_shutdown(Socket),!.

クライアント一般型_2(Input,Output,_,end_of_file,end_of_file) :- !.
クライアント一般型_2(Input,Output,_,_受け取った情報,_受け取った情報).
クライアント一般型_2(Input,Output,_述語名,Line1,_受け取った情報) :-
    functor(P,_述語名,Arg),
    arg(1,P,Line1),
    arg(2,P,Message),
    call(P),
    write_formatted(Output,%t\n,[Message]),    
    flush_output(Output),
    get_line(Line2),
    クライアント一般型_2(Input,Output,_述語名,Line2,_受け取った情報).