TCPのポート番号を指定して、サービス名を検索する
gosh> (use gauche.net) #gosh> (let ((serv (sys-getservbyport 135 "tcp"))) (list (slot-ref serv 'name) (slot-ref serv 'aliases) (slot-ref serv 'port) (slot-ref serv 'proto)))[Enter] ("epmap" ("loc-srv") 135 "tcp")
Windows7で実行
gosh> (define (getserv n) (let ((serv (sys-getservbyport n "tcp"))) (list (slot-ref serv 'name) (slot-ref serv 'aliases) (slot-ref serv 'port) (slot-ref serv 'proto))) ) getserv gosh> (getserv 135) ("epmap" ("loc-srv") 135 "tcp") gosh> (getserv 136) *** ERROR: object of class #> doesn't have such slot: name Stack Trace: _______________________________________ 0 (slot-ref serv 'name) At line 4 of "(stdin)" gosh> (getserv 445) ("microsoft-ds" () 445 "tcp")
fedora15で実行
getserv定義後 gosh> (getserv 135) ("epmap" () 135 "tcp") gosh> (getserv 136) ("profile" () 136 "tcp") gosh> (getserv 445) ("microsoft-ds" () 445 "tcp") gosh> (map getserv '(135 136 445)) (("epmap" () 135 "tcp") ("profile" () 136 "tcp") ("microsoft-ds" () 445 "tcp")) gosh> (getserv 10) *** ERROR: object of class #> doesn't have such slot: name Stack Trace: _______________________________________ 0 (slot-ref serv 'name) At line 9 of "(stdin)" gosh> (map getserv '(10 135)) *** ERROR: object of class # > doesn't have such slot: name Stack Trace: _______________________________________ 0 (slot-ref serv 'name) At line 9 of "(stdin)"
参照したURL: http://practical-scheme.net/gauche/man/gauche-refj_87.html