|
13 | 13 | RestrictNAT = "Restrict NAT" # 1 |
14 | 14 | RestrictPortNAT = "Restrict Port NAT" # 2 |
15 | 15 | SymmetricNAT = "Symmetric NAT" # 3 |
16 | | -NATTYPE = (FullCone, RestrictNAT, RestrictPortNAT, SymmetricNAT) |
| 16 | +UnknownNAT = "Unknown NAT" # 4 |
| 17 | +NATTYPE = (FullCone, RestrictNAT, RestrictPortNAT, SymmetricNAT, UnknownNAT) |
17 | 18 |
|
18 | 19 |
|
19 | 20 | def bytes2addr(bytes): |
@@ -76,7 +77,7 @@ def recv_msg(self, sock, is_restrict=False, event=None): |
76 | 77 | data, addr = sock.recvfrom(1024) |
77 | 78 | if addr == self.target or addr == self.master: |
78 | 79 | sys.stdout.write(data) |
79 | | - if data == "punching...\n": |
| 80 | + if data == "punching...\n": # peer是restrict |
80 | 81 | sock.sendto("end punching", addr) |
81 | 82 |
|
82 | 83 | def send_msg(self, sock): |
@@ -137,6 +138,11 @@ def main(self, test_nat_type=None): |
137 | 138 | self.request_for_connection(nat_type_id=NATTYPE.index(nat_type)) |
138 | 139 | except ValueError: |
139 | 140 | print("NAT type is %s" % nat_type) |
| 141 | + self.request_for_connection(nat_type_id=4) # Unknown NAT |
| 142 | + |
| 143 | + if nat_type == UnknownNAT or self.peer_nat_type == UnknownNAT: |
| 144 | + print("Symmetric chat mode") |
| 145 | + self.chat_symmetric() |
140 | 146 | if nat_type == SymmetricNAT or self.peer_nat_type == SymmetricNAT: |
141 | 147 | print("Symmetric chat mode") |
142 | 148 | self.chat_symmetric() |
|
0 commit comments