natemcmaster / dotnet-serve

Simple command-line HTTPS server for the .NET Core CLI
https://nuget.org/packages/dotnet-serve/
Apache License 2.0
805 stars 65 forks source link

Whatever port I use - always getting 'System.IO.IOException: Failed to bind to address http://0.0.0.0:8080: address already in use' #8

Closed ChristianWeyer closed 6 years ago

ChristianWeyer commented 6 years ago

Whatever port I use I always get this exception: System.IO.IOException: Failed to bind to address http://0.0.0.0:8080: address already in use

Using any other server tool on macOS works with those ports. Any idea what is wrong?

Thanks!

natemcmaster commented 6 years ago

Can you share the output of ifconfig?

ChristianWeyer commented 6 years ago

Sure :-)

➜  ~ ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
    options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
    inet 127.0.0.1 netmask 0xff000000
    inet6 ::1 prefixlen 128
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
    nd6 options=201<PERFORMNUD,DAD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
XHC20: flags=0<> mtu 0
en1: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
    options=60<TSO4,TSO6>
    ether 6a:00:01:d6:9b:90
    media: autoselect <full-duplex>
    status: inactive
en2: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
    options=60<TSO4,TSO6>
    ether 6a:00:01:d6:9b:91
    media: autoselect <full-duplex>
    status: inactive
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether f4:5c:89:ad:c5:45
    inet6 fe80::458:db28:17c:f1c5%en0 prefixlen 64 secured scopeid 0x9
    inet 192.168.178.77 netmask 0xffffff00 broadcast 192.168.178.255
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect
    status: active
p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304
    ether 06:5c:89:ad:c5:45
    media: autoselect
    status: inactive
awdl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1484
    ether 92:a4:f1:b9:b7:e7
    inet6 fe80::90a4:f1ff:feb9:b7e7%awdl0 prefixlen 64 scopeid 0xb
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect
    status: active
bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=63<RXCSUM,TXCSUM,TSO4,TSO6>
    ether 6a:00:01:d6:9b:90
    Configuration:
        id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
        maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
        root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
        ipfilter disabled flags 0x2
    member: en1 flags=3<LEARNING,DISCOVER>
            ifmaxaddr 0 port 7 priority 0 path cost 0
    member: en2 flags=3<LEARNING,DISCOVER>
            ifmaxaddr 0 port 8 priority 0 path cost 0
    nd6 options=201<PERFORMNUD,DAD>
    media: <unknown type>
    status: inactive
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
    inet6 fe80::baec:64e3:61f0:cd64%utun0 prefixlen 64 scopeid 0x6
    nd6 options=201<PERFORMNUD,DAD>
utun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1380
    inet6 fe80::d28f:6c1d:d6dd:2c1c%utun1 prefixlen 64 scopeid 0xe
    nd6 options=201<PERFORMNUD,DAD>
vnic0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=3<RXCSUM,TXCSUM>
    ether 00:1c:42:00:00:08
    inet 10.211.55.2 netmask 0xffffff00 broadcast 10.211.55.255
    media: autoselect
    status: active
vnic1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=3<RXCSUM,TXCSUM>
    ether 00:1c:42:00:00:09
    inet 10.37.129.2 netmask 0xffffff00 broadcast 10.37.129.255
    media: autoselect
    status: active
natemcmaster commented 6 years ago

I don't see anything obvious. I have a similar list of network interfaces on my macbook and it works just fine. 0.0.0.0 means bind to a port on all network interfaces. I suspect this is a bug in .NET Core and how it enumerates available interfaces. You can workaround this for now by using the -a|--address flag. dotnet serve -a 127.0.0.1.

natemcmaster commented 6 years ago

By the way, you can also look to see if port 8080 is in use somewhere by running lsof -i:8080 -n

ChristianWeyer commented 6 years ago

Thanks. There is really nothing running on that ports ;-)

Using -a worked, though!

GitHubShark39 commented 4 years ago

Royal Jackson Email: blackshark37@gmail.com

Changing the Jetty Port.md

https://www.eclipse.org/jetty/documentation/9.0.6.v20130930/quickstart-running-jetty.html

Error: java.net.BindException: Address already in use at sun.nio.ch.Net.bind0(Native Method) at sun.nio.ch.Net.bind(Net.java:344) at sun.nio.ch.Net.bind(Net.java:336) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:199)

You can configure Jetty to run on a different port by setting the jetty.port Property on the command line:

java -jar start.jar jetty.port=8081

KOTLAPRA23 commented 4 years ago

Hi Could you please help me here .

I am running wiremock junit test case and getting below exception every time Caused by: java.io.IOException: Failed to bind to /0.0.0.0:5000 at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:346) at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:307) at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:231) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72) at org.eclipse.jetty.server.Server.doStart(Server.java:385) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72) at com.github.tomakehurst.wiremock.jetty9.JettyHttpServer.start(JettyHttpServer.java:174) ... 67 common frames omitted Caused by: java.net.BindException: Address already in use at sun.nio.ch.Net.bind0(Native Method) at sun.nio.ch.Net.bind(Net.java:433) at sun.nio.ch.Net.bind(Net.java:425) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:342) ... 74 common frames omitted

Code sample:

@Configuration @AutoConfigureWireMock(port = 5000) public abstract class AuthorizationEnabledIntegrationTest extends SpringBootIntegrationTest {

@ClassRule public static WireMockRule someService = new WireMockRule(options().port(5000).withRootDirectory("src/integrationTest/resources/mappings")); }