Home > Blockchain >  Dart/Flutter sockets connects on random port
Dart/Flutter sockets connects on random port

Time:01-14

Modern programming is turning more and more frustrating. Trying to do a simple socket test app on Flutter (tested on Android). Code is simple and self explanatory:

 void Connect()
  {
    print("connecting...");
    Socket.connect("localhost", 80).then((Socket sock) {
      socket = sock;
      socket?.listen(dataHandler,
          one rror: errorHandler,
          onDone: doneHandler,
          cancelOnError: false);
      socket?.write("GET / HTTP/1.1");
    }).catchError((Object e) {
      print("Unable to connect: $e");
    });
  }

Code throws exception. Output:

I/flutter (15930): connecting...
I/flutter (15930): Unable to connect: SocketException: OS Error: Connection refused, errno = 111, address = localhost, port = 47244

The port is always different, why TF is that happening?

CodePudding user response:

The port number in the error message is the local port and not the remote port. There are an issue about this problem here: https://github.com/dart-lang/sdk/issues/12693

In short, when connecting using TCP, you need two ports. One local which is open on your device and one remote which is the port open on the system you are trying to call. After a connection is established, the communication is going between this two port numbers.

So the error indicates that your server running on localhost:80 is refusing the connection from your application. The local port number in the error message can often just be ignored since it is not really relevant to debug most issues.

  •  Tags:  
  • Related