A 10808 bind failure is a local inbound-listener issue, not proof that the remote node is down. Check the logs for the protocol, address, and port, then identify the process using it. If it's a duplicate instance, exit it; otherwise, choose an available port and update your system proxy, browser, and command-line settings. This guide covers Windows and macOS lookup commands, plus how to verify the change.
1. A 10808 Bind Failure: Local Listener or Remote Node?
v2rayN provides the client interface; the proxy core it launches typically handles local listening. An app connects to a local address such as 127.0.0.1:10808, and the core routes outbound connections according to its configuration. A local bind failure occurs at this entry point, so don't start by changing the remote server port in your subscription.
10808 is a common local listening port, but it doesn't tell you which inbound type every version uses. Some interfaces configure SOCKS and HTTP separately, and older configurations often use 10809 for HTTP. Others use a mixed listener that accepts both proxy protocols on one port. Check the actual fields under Settings → Parameter Settings and the startup logs.
TCP and UDP are separate listening resources, and IPv4 and IPv6 bindings can behave differently. If you see 0.0.0.0:10808 or [::]:10808, note that a wildcard listener may conflict with a loopback listener. Don't search only for a record that explicitly shows 127.0.0.1.
2. Identify the Issue from the Exact Error
Open the client logs and save the lines around the failure. Look for listen, bind, the address, and the port. Log prefixes vary between cores; the examples below are common excerpts from operating system errors, not exact full log lines.
bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
Cause and fix: On Windows, this usually means the address and port are already in use. Find the PID and process path, then decide whether to exit a duplicate instance or change the local port.
bind: address already in use
Cause and fix: A common address-in-use error on macOS and other environments. Use lsof to find the TCP listener, then check whether another client instance or a leftover core is still running.
bind: An attempt was made to access a socket in a way forbidden by its access permissions.
Cause and fix: This may involve an excluded port range or a security policy, rather than an ordinary process using the port. If no listener appears, check system-reserved ranges. Don't disable security features as a first step.
Failed to connect to 127.0.0.1 port 10808
Cause and fix: The app couldn't connect to this local port. The core may not have started, the port may have changed, or the listening address may not match. Confirm what's actually listening; this message alone doesn't mean the remote node timed out.
3. Windows: Find the Process Using Port 10808
In PowerShell, check for a TCP listener first, then look up its process details. These commands only display information; they don't stop any programs. An empty result means no TCP listener was found at the time of the query. It doesn't rule out other protocols or system-reserved ports.
$listeners = Get-NetTCPConnection -LocalPort 10808 -State Listen -ErrorAction SilentlyContinue
$listeners | Select-Object LocalAddress, LocalPort, State, OwningProcess
$listeners.OwningProcess | Sort-Object -Unique | ForEach-Object {
Get-Process -Id $_ | Select-Object Id, ProcessName, Path
}
You can also run these commands in Command Prompt. The 1234 in the second line is a sample PID; replace it with the actual PID from the first command. Don't mistake port 10808 for a process ID. When filtering the output, check the local address column to avoid misreading remote connection entries.
netstat -ano -p tcp | findstr ":10808"
tasklist /FI "PID eq 1234"
- Check the listening state: Look for
LISTENING. ATIME_WAITentry alone doesn't prove that a program is listening. - Check the path and process: Match the PID in Task Manager's Details tab and, if needed, check the file location. You may need elevated permissions to view some process paths.
- Exit normally first: If it's another v2rayN instance, exit from its tray menu. Closing the window may only minimize it to the tray.
- Keep necessary services running: If a program you still need owns the port, change the port in v2rayN. Don't force-stop a system service based on its process name alone.
If the TCP query returns nothing but the error specifically mentions UDP, check with Get-NetUDPEndpoint -LocalPort 10808 -ErrorAction SilentlyContinue. After exiting a duplicate instance, run the query again before launching the client you want to keep. This prevents multiple instances from competing for the port.
4. macOS and Windows Reserved Ports: When No Process Appears
macOS: Find the Listener and Its Full Command
Run these commands in Terminal. -nP keeps addresses and ports numeric so name resolution won't clutter the output. If you don't have permission, rerun the query with sudo lsof. As above, replace the sample PID in the second command with the actual one.
lsof -nP -iTCP:10808 -sTCP:LISTEN
ps -p 1234 -o pid=,ppid=,command=
Exit from the relevant app's menu, then confirm the listening entry disappears. If the client is closed but its core process is still running, check the full command and parent process. Only act once you've confirmed it belongs to the exited instance. Avoid killing processes by name in bulk; another active configuration may use the same core.
Windows: Check Excluded Port Ranges
If the error says access is denied and no listener appears, check the TCP excluded port ranges in a terminal. If 10808 falls within a listed range, choosing an available port outside it is usually preferable to changing system reservation rules.
netsh interface ipv4 show excludedportrange protocol=tcp
netsh interface ipv6 show excludedportrange protocol=tcp
5. Change the SOCKS, HTTP, or Mixed Listener Port
This example moves the ports to 11808 and 11809; these aren't guaranteed to be available. First, rerun the earlier lookup commands with the target port instead of 10808. If your system has relevant excluded ranges, make sure the new port isn't within one.
- Note the original port, listening address, and current system proxy mode so you can roll back if needed.
- In v2rayN, open Settings → Parameter Settings and look for the local listener, SOCKS, HTTP, or mixed-port fields. The section names may vary by interface version.
- If SOCKS and HTTP have separate fields, set them to
11808and11809, respectively. If there's only a mixed-listener field, change that field to11808; don't assume a separate 11809 field exists. - Save the settings, then restart the core or client as prompted. Check the logs for any remaining bind failures.
- Check which process is listening on the new port. Confirm the PID belongs to the core you just started, then update the proxy settings in your apps.
| Inbound type | Example port change | App proxy setting |
|---|---|---|
| Separate SOCKS listener | Change 10808 to 11808 | Set SOCKS5 to 127.0.0.1:11808 |
| Separate HTTP listener | Change 10809 to 11809 | Set the HTTP proxy to 127.0.0.1:11809 |
| Mixed listener | Change 10808 to 11808 | HTTP and SOCKS5 both use 11808; select the correct protocol |
Key point: Only a mixed listener can share one port directly
If the interface provides two separate inbounds, don't set both SOCKS and HTTP to 11808. Identify the inbound type first, then choose the matching proxy protocol in the app. The same port number doesn't make the protocols interchangeable.
For local use only, keep the listener on the loopback address. Changing it to 0.0.0.0 isn't a general fix for a port conflict and may expose it to more devices. If you use a custom JSON configuration, check the active inbounds. Interface settings may not override a port fixed in an imported configuration. See the JSON Configuration Guide for details on the fields.
6. Update System Proxy, Browser, and Command-Line Settings
Starting the core on a new port doesn't automatically update every app or invalidate the old proxy address. System proxy settings, browser-specific proxy settings, and terminal environment variables are separate sources. Check each one the apps you use rely on.
- v2rayN system proxy: From the tray menu, open System Proxy and clear the current setting, then select Set system proxy automatically so the client can apply its current configuration. Verify the actual port in your system settings afterward.
- Windows: Open Settings → Network & Internet → Proxy and check the manual proxy or setup script. If you use a script, check the proxy port it returns rather than relying only on the manual proxy toggle.
- macOS: Open System Settings → Network → your current connection → Details → Proxies. If Web Proxy, Secure Web Proxy, or SOCKS Proxy is configured manually, update each one to the appropriate port.
- Browser: Browsers that use the system proxy usually follow its settings. For browsers with a separate proxy configuration or extension, change the port there and confirm whether the selected protocol is HTTP or SOCKS5.
- Command line: Check
HTTP_PROXY,HTTPS_PROXY,ALL_PROXY, and their lowercase equivalents in the current terminal. After editing a startup script, existing terminal sessions may still retain the old values.
When using a local HTTP proxy to access HTTPS websites, the proxy address is typically still http://127.0.0.1:11809. An HTTPS website doesn't mean the local proxy endpoint must use https://. Likewise, a standard system HTTP proxy can't point directly to a listener that supports only SOCKS.
7. Verify the New Port and Check for Rollback Issues
Verify the local listener first, then the proxy protocol, and only then troubleshoot remote connections. These commands demonstrate separate HTTP and SOCKS inbounds. For a mixed port, change 11809 to 11808 in the first command. The example request uses this site's home page and doesn't assume a fixed response time or status code.
curl --proxy http://127.0.0.1:11809 --connect-timeout 5 --max-time 20 -I https://v2rayindex.com/
curl --proxy socks5h://127.0.0.1:11808 --connect-timeout 5 --max-time 20 -I https://v2rayindex.com/
In Windows PowerShell, use curl.exe instead of curl to avoid a same-name alias interfering with the arguments in some environments. socks5h means the proxy resolves the destination hostname; this differs from socks5, which uses local DNS resolution. Note which mode you use when testing.
- No listener on the new port: Check the client logs again. Confirm the settings were saved, the core started, and a custom configuration isn't overriding the interface value.
- Connection refused immediately: Check the port and address first. If the listener is bound only to the IPv4 loopback address,
localhostmay resolve differently over IPv6. Use127.0.0.1explicitly for the test. - Proxy connects, but the remote request fails: The local bind conflict is probably no longer the blocker. Check the proxy protocol, routing, DNS resolution, and remote connection logs.
- Command-line test works, but the browser fails: Check whether the browser still points to 10808, uses a separate proxy extension, or retains the old system proxy settings.
- To stop using the client temporarily: Clear the system proxy first, then exit the client. This prevents apps from trying to use a local port that is no longer listening.
Wrap-up: Change One Thing at a Time
Move the port and confirm the listener first, update app proxy settings next, then test the remote request. Record the old-to-new port mapping. Don't change the node, routing, and DNS all at once; otherwise, it's hard to tell which change made a difference.