Spaces:
Runtime error
Runtime error
| <title>TCP Terminal</title> | |
| <script src="../build/libv86.js"></script> | |
| <script> | |
| ; | |
| window.onload = function() | |
| { | |
| var emulator = window.emulator = new V86({ | |
| wasm_path: "../build/v86.wasm", | |
| memory_size: 64 * 1024 * 1024, | |
| vga_memory_size: 2 * 1024 * 1024, | |
| screen_container: document.getElementById("screen_container"), | |
| bios: { | |
| url: "../bios/seabios.bin", | |
| }, | |
| vga_bios: { | |
| url: "../bios/vgabios.bin", | |
| }, | |
| bzimage: { | |
| url: "../images/buildroot-bzimage68.bin", | |
| }, | |
| net_device: { | |
| relay_url: "fetch", | |
| type: "virtio" | |
| }, | |
| autostart: true | |
| }); | |
| var is_connected = false, connection = null; | |
| function clear_log() | |
| { | |
| document.getElementById("log").value = ""; | |
| } | |
| function write_log(text) | |
| { | |
| document.getElementById("log").value += text; | |
| } | |
| function on_connect() | |
| { | |
| document.getElementById("connect").innerHTML = "Disconnect"; | |
| document.getElementById("send").disabled = false; | |
| is_connected = true; | |
| } | |
| function on_disconnect() | |
| { | |
| document.getElementById("connect").innerHTML = "Connect"; | |
| document.getElementById("send").disabled = true; | |
| is_connected = false; | |
| } | |
| document.getElementById("connect").onclick = async function() { | |
| if(!is_connected) | |
| { | |
| clear_log(); | |
| let port = parseInt(document.getElementById("port").value); | |
| write_log("> Probing port " + port + "\n"); | |
| let open = await emulator.network_adapter.tcp_probe(port); | |
| if(open) | |
| { | |
| connection = emulator.network_adapter.connect(port); | |
| connection.on("connect", function() | |
| { | |
| write_log("> Connected\n\n"); | |
| on_connect(); | |
| }); | |
| connection.on("data", function(data) | |
| { | |
| write_log(new TextDecoder().decode(data)); | |
| }); | |
| connection.on("close", function() | |
| { | |
| write_log("\n> Closed by listener"); | |
| on_disconnect(); | |
| }); | |
| connection.on("shutdown", function() | |
| { | |
| write_log("\n> Shutdown by listener"); | |
| on_disconnect(); | |
| }); | |
| } | |
| else | |
| { | |
| write_log("> Probing failed"); | |
| } | |
| } | |
| else | |
| { | |
| connection.close(); | |
| write_log("\n> Closed by client"); | |
| on_disconnect(); | |
| } | |
| } | |
| document.getElementById("send").onclick = function() | |
| { | |
| connection.write(new TextEncoder().encode(document.getElementById("prompt").value + "\r\n")); | |
| document.getElementById("prompt").value = ""; | |
| } | |
| document.getElementById("prompt").onkeydown = function(e) | |
| { | |
| if(e.which == 13 && is_connected) | |
| { | |
| document.getElementById("send").onclick(); | |
| } | |
| }; | |
| clear_log(); | |
| } | |
| </script> | |
| <div id="screen_container" style="float: left"> | |
| <div style="white-space: pre; font: 14px monospace; line-height: 14px"></div> | |
| <canvas style="display: none"></canvas> | |
| </div> | |
| <div style="float: left; margin: 10px"> | |
| <textarea readonly cols="60" rows="15" id="log"></textarea><br> | |
| Port: <input type="number" min="1" max="65535" value="1234" id="port" /> | |
| <button id="connect">Connect</button> <input type="text" id="prompt" /> | |
| <button id="send" disabled="true">Send (enter)</button> | |
| <h3>Getting started</h3> | |
| <ol> | |
| <li>Run <code>udhcpc</code></li> | |
| <li>Run any TCP server: | |
| <ul> | |
| <li>Echo: <code>socat -v PIPE TCP-L:1234,fork</code></li> | |
| <li>(more examples on <a href="broadcast-network.html">broadcast-network.html</a>)</li> | |
| </ul> | |
| <li>Type a port number and press "Connect"</li> | |
| </ol> | |
| </div> | |