>>307
書いたことないから、動かないかもしれないけど、やはりこんな感じかな。一文字毎のrawmode receive 出力後
のflushout が必要なのかも知れない。

echo_server(Port) :-
    socket(internet,stream,Socket),
    socket_bind(Socket,Port),
    一文字の受信・送信を繰り返す(Socket),
    socket_shutdown(Socket).

一文字の受信・送信を繰り返す(Socket) :-
    socket_listen(Socket),
    socket_accept(Socket,Host : Port,NewSocket),
    open(NewSocket,read,Input,[type(binary)]),
    open(NewSocket,write,Output,[type(binary)]),
    get_byte(Input,Code),
    一文字の受信・送信を繰り返す(NewSocket,Input,Output,Code),
    close(Output),
    close(Input),
    close(NewSocket),
    一文字の受信・送信を繰り返す(Socket).

一文字の送信・受信を繰り返す(_,_,-1) :- !.
一文字の送信・受信を繰り返す(Input,Output,Code) :-
    put_byte(Output,Code),
    get_byte(Input,Code2),
    一文字の送信・受信を繰り返す(Input,Output,Code2).