1051 @param redirect flag indicating redirection of stdin, stdout and stderr (boolean) |
1051 @param redirect flag indicating redirection of stdin, stdout and stderr (boolean) |
1052 """ |
1052 """ |
1053 if remoteAddress is None: # default: 127.0.0.1 |
1053 if remoteAddress is None: # default: 127.0.0.1 |
1054 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
1054 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
1055 sock.connect((DebugAddress, port)) |
1055 sock.connect((DebugAddress, port)) |
1056 elif ":" in remoteAddress: # IPv6 |
1056 else: |
1057 sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) |
1057 if "@@i" in remoteAddress: |
1058 sock.connect((remoteAddress, port)) |
1058 remoteAddress, index = remoteAddress.split("@@i") |
1059 else: # IPv4 |
1059 else: |
1060 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
1060 index = 0 |
1061 sock.connect((remoteAddress, port)) |
1061 if ":" in remoteAddress: # IPv6 |
|
1062 sockaddr = socket.getaddrinfo( |
|
1063 remoteAddress, port, 0, 0, socket.SOL_TCP)[0][-1] |
|
1064 sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) |
|
1065 sockaddr = sockaddr[:-1] + (int(index),) |
|
1066 sock.connect(sockaddr) |
|
1067 else: # IPv4 |
|
1068 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
1069 sock.connect((remoteAddress, port)) |
1062 |
1070 |
1063 self.readstream = AsyncFile(sock, sys.stdin.mode, sys.stdin.name) |
1071 self.readstream = AsyncFile(sock, sys.stdin.mode, sys.stdin.name) |
1064 self.writestream = AsyncFile(sock, sys.stdout.mode, sys.stdout.name) |
1072 self.writestream = AsyncFile(sock, sys.stdout.mode, sys.stdout.name) |
1065 self.errorstream = AsyncFile(sock, sys.stderr.mode, sys.stderr.name) |
1073 self.errorstream = AsyncFile(sock, sys.stderr.mode, sys.stderr.name) |
1066 |
1074 |