elif state == 1: if tcp.get_SYN() or not tcp.get_ACK(): break print('connected...') state = 2 elif state == 2: if tcp.get_FIN(): ip, tcp = reply(ip, tcp) tcp.set_th_ack(tcp.get_th_seq() + data_len) tcp.set_th_seq(1) tcp.reset_FIN() buf = ip.get_packet() print(tcp, tcp.get_th_seq(), tcp.get_th_ack()) server.sendto(buf, ('127.0.0.1', 0)) tcp.set_FIN() buf = ip.get_packet() print(tcp, tcp.get_th_seq(), tcp.get_th_ack()) server.sendto(buf, ('127.0.0.1', 0)) state = 3 else: tcp_len = tcp.get_size() head_len = (ip_len + tcp_len) msg = data[head_len:] data_len = len(data) - head_len print(msg) ip, tcp = reply(ip, tcp) tcp.set_ACK() tcp.reset_PSH() tcp.set_th_ack(tcp.get_th_seq() + data_len)