Ich möchte überprüfen, ob ein Server zuhört oder nicht und dafür verwende ich den unten gezeigten Code.Kann catch/3 für tcp_connect in Prolog nicht verwenden
:- 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')).
Ich nenne die wichtigsten aus dem Konsolenteil. Ich habe versucht, catch/3 zu verwenden, um den Fehler zu fangen, aber mein Code bleibt immer stecken und ich bekomme Betriebssystemfehler 'swipl. exe funktioniert nicht mehr ' was mich zwingt, die Prolog-Konsole zu schließen. Jede Hilfe wird geschätzt.
Ich habe dies in Debian versucht, mit der neuesten Entwicklungsversion von SWI, und es funktioniert genau wie erwartet. Verwenden Sie auch die neueste Version von SWI-Prolog? – mat
@mat Danke. Es funktionierte mit der neuesten Entwicklungsversion. Ich benutzte die stabile Version 7.2.3. –
Großartig! Bitte poste dies als Antwort und akzeptiere es, um diese Frage als abgeschlossen zu markieren. – mat