| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| import "dart:async"; |
| import "dart:io"; |
| import "dart:typed_data"; |
| |
| import "package:expect/expect.dart"; |
| |
| void testHostAndPort() { |
| ServerSocket.bind("::1", 0).then((server) { |
| Socket.connect("::1", server.port).then((clientSocket) { |
| server.listen((socket) { |
| Expect.equals(socket.port, server.port); |
| Expect.equals(clientSocket.port, socket.remotePort); |
| Expect.equals(clientSocket.remotePort, socket.port); |
| Expect.equals(socket.remoteAddress.address, "::1"); |
| Expect.equals(socket.remoteAddress.type, InternetAddressType.IPv6); |
| Expect.listEquals(socket.remoteAddress.rawAddress, [ |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 1, |
| ]); |
| Expect.equals(clientSocket.remoteAddress.address, "::1"); |
| Expect.equals( |
| clientSocket.remoteAddress.type, |
| InternetAddressType.IPv6, |
| ); |
| Expect.listEquals(clientSocket.remoteAddress.rawAddress, [ |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 1, |
| ]); |
| socket.destroy(); |
| clientSocket.destroy(); |
| server.close(); |
| }); |
| }); |
| }); |
| } |
| |
| Future<void> testRawAddress() async { |
| var list = Uint8List.fromList([ |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 0, |
| 1, |
| ]); |
| var addr = '::1'; |
| var address = InternetAddress.fromRawAddress(list); |
| Expect.equals(address.address, addr); |
| var server = await ServerSocket.bind(address, 0); |
| var client = await Socket.connect(address, server.port); |
| var completer = Completer<void>(); |
| server.listen((socket) async { |
| Expect.equals(socket.port, server.port); |
| Expect.equals(client.port, socket.remotePort); |
| Expect.equals(client.remotePort, socket.port); |
| |
| Expect.equals(client.remoteAddress, address); |
| socket.destroy(); |
| client.destroy(); |
| await server.close(); |
| completer.complete(); |
| }); |
| await completer.future; |
| } |
| |
| void main() async { |
| testHostAndPort(); |
| await testRawAddress(); |
| } |