ServerSocket

void main() async {
  ServerSocket serverSocket = await ServerSocket.bind("localhost", 8888);
  serverSocket.listen((Socket client) {
    client.write("ok");
    client.close();
  });
}

Socket

Future<void> main() async {
  Socket socket = await Socket.connect("localhost", 8888);
  socket.listen((data) {
    print(String.fromCharCodes(data));
  }, onDone: (){
    socket.destroy();
  });
}

判定某个端口是否被占用

/// port为0的时候会随机返回一个没用过的port
Future<int> getUnusedPort(int initPort)async {
  int port;
  ServerSocket serverSocket;
  try{
    serverSocket = await ServerSocket.bind("localhost", initPort);
    port = serverSocket.port;
    await serverSocket.close();
  }on Exception{
    port = -1;
  }
  return  port;
}