Prolog Agent的範例

之前有研究過一些Agent的用法,但是因長久未使用(大概兩到三個月),所以已經忘得差不多了。
現在我只能稍微把印像中的資料寫下,以免日子隔得越久我忘得越多
我之前寫的程式,把他拿來當範例說明,這個程式是clint端的程式,server端的程式不知道被我丟到哪裡去
我找不到server端的程式
範例程式

我簡略的說明:
telnet(Host,Port):-
agent_reset,
MyAgentName = [name(aimm_clint)],
agent_create( MyAgentName,_),
agent_initialize,
aimm_connect(Host,Port),
talk_conn.
這個部分是設定要連去server的IP和Port,用法telnet(140.129.25.117,23).這樣就可以連接到140.129.25.117機器上
agent_create(X,Y)這個函數是Agent提供給我們使用的,X是設定自己電腦的名稱
使用agent_initialize做出始化動作,系統會幫你做好一些連線時必要的準備動作,就是socket的設定
aimm_connect(X,Y)幫你建立與server端的連線,內容如下


aimm_connect( Host, Port ):-
write( `連線中..`),
( agent_connect( Host, Port, Channel )
-> first_conn(hi,Channel)
; true
).



主要就是建立第一次連線的設定,取得與主機連線的Channel,並與主機打招呼

talk_conn是我自己寫的東西,內容如下


talk_conn:-
nl,write('>>>'),
get_string([ ],Out),
Out \= [3]->
name(Msg,Out),get_channel(C),
integer(C)->
secend_conn(request,Msg,C),talk_conn
;write('尚未連線')
;write('網路中斷....'),
retractall(serverNames(X)),retractall(you_connected(Z)),
aimm_disconnect.



這個東西是主要Loop,如果不是第一次與主機連線,而且狀態不是斷線,則進入此Loop傳送訊息secend_conn(request,Msg,C)

完整程式請參閱範例程式

    全站熱搜

    CJY0503 發表在 痞客邦 留言(1) 人氣()