feat(server): detect a bound-but-unserviced port and report it
Start() succeeding proves only that the bind succeeded, not that the port is being serviced. On Windows the server can end up bound to a port that accepts TCP connections and then never answers them, so the editor reports a healthy server while every client hangs (issue #141). Adds a short background probe after a successful start. It connects to the port and sends a request for a deliberately non-existent path: a healthy websocket-sharp answers 501 and closes, which proves the accept loop is live without ever creating a /McpUnity session. Only a read timeout is treated as dead - both 'data received' and 'peer closed' count as alive, because silence with the connection held open is the distinguishing signature. Every resolved address is tried. Binding 'localhost' can yield an IPv6-only listener, against which 127.0.0.1 is refused, so a default TcpClient (IPv4) cannot reach a perfectly healthy server and would false-alarm. This DETECTS and reports only; it does not attempt a repair, and the message describes what was observed rather than asserting a cause.
T
TenaciousLibbs committed
8cc4270e8f511e22ea23b598a6a8c5c687d0d80e
Parent: bbfb1c0