At a glance

This guide is for users whose v2rayN fails to start, whose 10808 port is already in use, whose browser proxy is unresponsive, or whose core keeps exiting. Start by confirming the listening address, then use Windows, macOS, or Linux tools to identify the process. Finally, stop the old process or change the port, and update system, browser, and app proxy settings.

Confirm that a port conflict is actually occurring

Cores such as V2Ray and Xray create inbound listeners on the local machine, while browsers and other apps send requests to those ports. A common setup uses 127.0.0.1:10808 for SOCKS and 127.0.0.1:10809 for HTTP. The exact ports depend on the client configuration and are not fixed across all versions.

A port conflict occurs when two processes try to listen on the same address, use the same transport protocol, and bind to the same port. For example, if an old v2rayN core is still running and a newly launched core tries to bind to 127.0.0.1:10808, the system rejects the second listener. Subscriptions, VMess, VLESS, and routing rules are usually not the first things to check.

App sends a requestConnects to local portCore accepts inbound trafficRules select a routeProxy outbound
10808
Common SOCKS listening port
10809
Common HTTP listening port
127.0.0.1
Listener accessible only from this machine
0.0.0.0
All IPv4 interfaces

Error: listen tcp 127.0.0.1:10808: bind: address already in use

Cause and fix: Another process is using TCP 10808. Find its PID, verify which program it belongs to, then exit the old process normally or move the new client to an unused port.

Error: Only one usage of each socket address is normally permitted

Cause and fix: Windows rejected a duplicate bind to the same socket address. Check whether v2rayN was launched twice, an old core is still running, or another local proxy is active.

Symptom: The core is running, but the browser keeps reporting that the proxy server is not responding

Cause and fix: This may not be a port conflict. The browser could still be pointing to the old port. Compare the client’s current listener settings and make sure the HTTP or SOCKS type is correct.

Find the process using 10808 on Windows

Both Windows 11 and Windows 10 include netstat for identifying listeners. Fully exit v2rayN before starting the check, then open a terminal and run the command. This helps prevent the new process from being mistaken for the conflicting one.

  1. Query listening records

    Open PowerShell or Command Prompt and run netstat -ano | findstr :10808. Focus on lines whose state is LISTENING, and note the PID in the far-right column.

  2. Verify the process name

    Run tasklist /FI "PID eq process number", replacing the process number with the actual PID. You can also search by PID on the Details tab in Task Manager.

  3. Decide whether it can be stopped

    If the result belongs to an old v2rayN process or core, exit it normally from the tray menu. If it belongs to another program that is still in use, do not terminate it immediately; move one of the clients to a different port instead.

  4. Confirm the port again

    Run the query again. Once no LISTENING entry remains, start v2rayN and check the log for a successful listener message.

netstat -ano | findstr :10808
tasklist /FI "PID eq 6420"

PowerShell:
Get-NetTCPConnection -LocalPort 10808 -State Listen
Get-Process -Id 6420

If the results show several connection states, do not treat ESTABLISHED or TIME_WAIT as listeners. The state to verify is LISTENING, or Listen in PowerShell output. Connection-state entries indicate active connections; their rightmost PID can still help identify the process using them.

Bottom line: identify the PID first, then handle the process

Stopping a process is not always required. If the PID belongs to an old core, exit it normally. If it belongs to a development server, remote-access tool, or proxy that is still working, changing the local v2rayN port is usually safer.

Check listeners on macOS and Linux

Both macOS and Linux can use lsof to inspect ports, while Linux distributions typically also include ss. On Debian, Ubuntu, Fedora, and similar systems, regular users may not see complete details for processes started by other accounts. After confirming the required permissions, use sudo when necessary.

macOS:
lsof -nP -iTCP:10808 -sTCP:LISTEN

Linux:
ss -ltnp | grep ':10808'
sudo lsof -nP -iTCP:10808 -sTCP:LISTEN

Error: listen tcp 0.0.0.0:10808: bind: address already in use

Cause and fix: Another program is listening on 10808 across all IPv4 interfaces. Use ss -ltnp or lsof to find the PID, then decide whether to stop the related user service or change the client port.

Symptom: lsof returns no output, but the client still says 10808 is in use

Cause and fix: Check whether the actual error involves UDP, IPv6, or a different port. Then query [::]:10808, UDP listeners, and the complete address shown in the log.

Stop the old process or change the listening port

The right fix depends on whether the process using the port is still needed. After verifying its identity, you can stop an orphaned old core, a duplicate client instance, or a process left by an abnormal exit. If the port belongs to an ongoing service, keep that service running and give v2rayN a different local port.

Do not change just one setting. SOCKS, HTTP, LAN listening, and API ports may be configured separately; any two settings that accidentally use the same address and port can prevent the core from starting. After choosing a new port, also verify that system and app proxy settings were updated.

  1. Record the current settings

    In the v2rayN main window, open “Settings” → “Parameter settings” and record the local SOCKS, HTTP, and LAN access values. Group names may vary slightly between versions; use the port fields as the source of truth.

  2. Choose an unused port

    Use a system command to check candidate ports first, such as 10810 or 10811. After confirming that nothing is listening, enter the port in the client rather than choosing it simply because the number looks unfamiliar.

  3. Save and restart the core

    Save the settings, then restart the core or close and reopen v2rayN. Query the new port afterward and confirm that the expected PID is listening.

  4. Reset the proxy entry points

    If v2rayN does not manage the system proxy automatically, replace 127.0.0.1:10808 with the new port. Update browser extensions and standalone apps individually as well.

  5. Keep the address scope in mind

    For local-only use, keep the listener on 127.0.0.1. Enable LAN listening only when devices on the local network explicitly need to connect.

Scenario Recommended action Check afterward
Old v2rayN core left running Exit the old process normally, then start the current client Is 10808 being listened to by the new PID?
Another local service uses the port continuously Keep the existing service and move the proxy to an unused port such as 10810 System proxy and browser ports
Two v2rayN instances running at the same time Keep only the required instance, or assign different ports to the two instances Tray icon and startup items
LAN listening covers the local address Verify that listening on all interfaces is actually required Binding scope of 0.0.0.0 and 127.0.0.1

Bottom line: let long-running services keep their ports; exit orphaned processes

When the conflicting process is still doing useful work, change the local proxy port. When the conflict comes from a duplicate launch or an old core, removing its startup source is more effective than repeatedly changing ports.

Update system proxy and browser settings

If access still fails after resolving the port conflict, traffic is most often still going to the old port. Seeing 10810 in the client does not mean that the browser, command-line tools, and system proxy automatically switched to 10810. Check every manually configured proxy entry separately.

Confirm the new portUpdate system proxyUpdate browserCheck standalone appsTest the connection
Where to check What to verify Common mistake
Windows system proxy Address is 127.0.0.1 and the port matches the current HTTP inbound Entering the SOCKS port in a field that accepts only HTTP
Browser-specific proxy Proxy type, host, and port all match The extension still stores the old 10808
Command-line environment variables HTTP_PROXY, HTTPS_PROXY, and ALL_PROXY The terminal session has not reloaded the variables
Other devices on the LAN Enter the LAN address of the computer running the client and the new port Entering 127.0.0.1, which points to the device itself

Symptom: The core runs normally after switching to 10810, but webpages immediately refuse the connection

Cause and fix: The app is still connecting to the old 10808, or it is treating a SOCKS proxy as HTTP. Select the correct proxy type and update every manual entry to the current listener.

Symptom: The browser works, but terminal commands still cannot connect

Cause and fix: The browser and terminal are using different proxy sources. Check proxy environment variables in the current terminal session, then reopen the terminal and test again.

On Android, v2rayNG and v2flyNG generally manage the local proxy and VPN handoff within the app. If connection problems appear after importing the same subscription, do not directly reuse desktop PID commands. First check whether another VPN connection is enabled, then verify the client’s local port and runtime status.

Verification steps after fixing the issue

Start verification with the local listener rather than assuming the node has failed. If the local port is not established, protocol handshakes, transport connections, and routing cannot occur. First prove that the app can connect to the local proxy, then check node parameters and the remote network.

  1. Confirm a single listener

    Run netstat, lsof, or ss again. The target port should be listened to by the expected core PID, with no unexplained second service.

  2. Check the client log

    Watch the log for 30 seconds after startup and confirm there are no new address already in use errors, repeated restarts, or inbound creation failures.

  3. Test the local proxy

    Have the browser or command-line tool connect explicitly to the current port. An immediate connection refusal indicates a local listener problem; a timeout after the connection is established points to the node or network.

  4. Verify routing results

    Confirm that routing rules are not sending the test target to direct or blocked outbound traffic by mistake. Fixing a port does not automatically change geosite, geoip, domain, or other rules.

  5. Recheck automatic startup

    Check again after rebooting or signing in again. If the old port is occupied once more, a login startup item or user service is still launching the old instance in the background.

1 PID
Expected listener for the target port
30 seconds
Post-startup log observation window
2 checks
Review after the change and after signing in again

If the port is listening normally but every node still times out, investigate the network and configuration layers: verify system time, node address, protocol parameters, transport settings, and subscription validity. A port conflict occurs during local inbound setup and cannot explain every connection failure after traffic has already entered the core.