Невозможно использовать catch/3 для tcp_connect в прологе
Я хочу проверить, слушает ли сервер или нет, и для этого я использую код, показанный ниже.
:- use_module(library(socket)).
goal(IP,Port,Sock):-
tcp_socket(Sock),
tcp_connect(Sock,IP:Port).
main(IP,Port):-
catch(goal(IP,Port,Sock),error(X,Y),writeln('Error')).
Я вызываю основную часть из консоли. Я пытался использовать catch/3, чтобы поймать ошибку, но мой код всегда зависает, и я получаю swipl ошибки операционной системы . exe перестал работать ', что заставляет меня закрыть консоль пролога. Любая помощь приветствуется.
1 ответ
Решение
Я нашел ответ на мою проблему. Я использовал стабильную версию 7.2.3. Использование разрабатываемой версии 7.3.2 решило мою проблему.