v2rayN Local Port in Use: Find the Process and Change Port 10808

Find the process using a local listening port with built-in system commands. Learn how to change the SOCKS and HTTP ports in v2rayN and update your system proxy and browser settings.

At a glance

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.

10808
Local port covered in this guide
10809
HTTP port in some older configurations
127.0.0.1
IPv4 loopback address for local access only

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"
  1. Check the listening state: Look for LISTENING. A TIME_WAIT entry alone doesn't prove that a program is listening.
  2. 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.
  3. Exit normally first: If it's another v2rayN instance, exit from its tray menu. Closing the window may only minimize it to the tray.
  4. 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.

  1. Note the original port, listening address, and current system proxy mode so you can roll back if needed.
  2. 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.
  3. If SOCKS and HTTP have separate fields, set them to 11808 and 11809, respectively. If there's only a mixed-listener field, change that field to 11808; don't assume a separate 11809 field exists.
  4. Save the settings, then restart the core or client as prompted. Check the logs for any remaining bind failures.
  5. 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 typeExample port changeApp proxy setting
Separate SOCKS listenerChange 10808 to 11808Set SOCKS5 to 127.0.0.1:11808
Separate HTTP listenerChange 10809 to 11809Set the HTTP proxy to 127.0.0.1:11809
Mixed listenerChange 10808 to 11808HTTP 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.

App proxy entry Local listener Route match Remote outbound

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.

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.

Download v2rayNChoose a client for your platform