socketToServer static method

Future<SocketConnector> socketToServer({
  1. required InternetAddress socketAddress,
  2. required int socketPort,
  3. InternetAddress? serverAddress,
  4. int? receiverPort,
  5. bool? verbose,
})

Binds a Server socket on a specified InternetAddress Port on which to listen can be specified but if not given a spare port will be found by the OS. Then opens socket to specified Internet Address and port Finally relays data between sockets and optionaly displays contents using the verbose flag

Implementation

static Future<SocketConnector> socketToServer(
    {required InternetAddress socketAddress,
    required int socketPort,
    InternetAddress? serverAddress,
    int? receiverPort,
    bool? verbose}) async {
  InternetAddress receiverBindAddress;
  receiverPort ??= 0;
  verbose ??= false;

  serverAddress ??= InternetAddress.anyIPv4;
  receiverBindAddress = serverAddress;

  SocketConnector socketStream = SocketConnector(null, null, 0, 0, null, null);

  // connect socket server to an address and port
  socketStream._socketA = await Socket.connect(socketAddress, socketPort);

  // bind the socket server to an address and port
  socketStream._serverSocketB = await ServerSocket.bind(receiverBindAddress, receiverPort);

  // listen for sender connections to the server
  _handleSingleConnection(socketStream._socketA!, true, socketStream, verbose);
  // listen for receiver connections to the server
  socketStream._serverSocketB?.listen((receiver) {
    _handleSingleConnection(receiver, false, socketStream, verbose!);
  });
  return (socketStream);
}