Vice remote monitor - verbindung beenden

Es gibt 6 Antworten in diesem Thema, welches 1.170 mal aufgerufen wurde. Der letzte Beitrag (20. Oktober 2022 um 22:15) ist von schorsch3000.

  • Hi,

    vorab, ich weiß nicht ob ich richtig einsortiert habe, falls nicht, gerne verschieben und auf die Finger hauen :smile:

    Also,

    ich möchte in meinem Makefile gerne mein erzeugtes .d64 in vice laden.

    Da ich das in großer regelmässig machen möchte und nicht immer Fenster an unterschiedlichen Stellen aufpoppen haben möchte starte ich initial x64 mit -remotemonitor und schiebe das in den hintergrund.

    Dann autostarte ich mein d64, mach das aktuell aber eher unschön:

    Code
        echo 'autostart "$(PWD)/$(name).d64"' | timeout 1 nc localhost 6510

    Zumindest das timeout 1 würde ich gerne wegoptimieren, stehe da aber gerade ein wenig auf dem schlauch.

    Was tun? Muss ich vielleicht auch einfach mehr als einen schritt zurück und das ganz anders lösen?

  • Hm... Wer hat denn den schrottigen Code geschrieben? ;)

    Also: Beim Beenden der TCP-Verbindung verhält sich der Remote-Monitor etwas anders, als wenn ein "x" kommt. Deshalb reicht das "x" nicht.

    Du musst nc dazu bringen, nach dem Übertragen des letzten Bytes die Verbindung zu beenden.

    Bei OpenBSD-basierten netcat geht das mit:

    Code
    nc -q1 localhost 6510

    netcats von GNU brauchen wohl "-c" statt "-q1". Siehe hierzu auch: Bitte melde dich an, um diesen Link zu sehen.

    Ich habe es hier mit dem -q1 erfolgreich getestet.

  • ALSO... :D

    Da find ich jetzt ein paar dinge komisch:

    a: offensichtlich hab ich auf meinem debian ein BSD und kein GNU nc

    b: inhaltlich ist das ja das selbe wie mit dem timeout, okay nicht ganz, das netvcat wartet auf's EOF, trotzdem sollte das ja ne sekunde länger dauern als es eigentlich müsste.

    c: b: stimmt nicht. es funktioniert wie erwartet nur das das ganze deutlich unter einer sekunde erlegt ist, obwohl die doku von sekunden spricht:

    Code
        -q secs            quit after EOF on stdin and delay of secs

    da steht AND nicht OR.

    aber gut, ich nehm das jetzt einfach hin und bin glücklich damit, danke :thumbsup:

    PS: die zahl hinter -q hat bei mir (zumindedest mit vice am anderen ende) einfach keine wirkung...

  • a: offensichtlich hab ich auf meinem debian ein BSD und kein GNU nc

    Same here. Ich habe "netcat-traditional" installiert, welches wohl dem OpenBSD "nachempfunden" ist. Das Paket "netcat" hängt von "netcat-openbsd" ab.

    b: inhaltlich ist das ja das selbe wie mit dem timeout, okay nicht ganz, das netvcat wartet auf's EOF, trotzdem sollte das ja ne sekunde länger dauern als es eigentlich müsste.

    Ja, das war mir auch aufgefallen. Mit -q0 geht es nicht, weil die Verbindung zu früh beendet wird, nämlich unmittelbar nach dem EOF - dann wird dem Monitor aber keine Zeit für eine Antwort gelassen. Ich bin mir nicht sicher, ob es mit deinem autostart-Kommando trotzdem gehen würde. Ich hatte es mit "m 0801 0810" probiert, das ging auf jeden Fall schief. Wieso er nicht die eine Sekunde wartet habe ich allerdings auch nicht verstanden.

    Du kannst ja mal "-q0" ausprobieren.