programming - tcp server python socket
Enviar un reinicio en la conexión TCP/IP Socket (3)
Estoy usando socket.py de python para crear una conexión a un servidor ftp. Ahora quiero restablecer la conexión (enviar un indicador RST) y escuchar la respuesta del servidor ftp. (Para su información, el uso de socket.send ('''', ''R'') no funciona porque el sistema operativo envía el indicador FIN en lugar de RST.)
Active la opción de zócalo SO_LINGER y establezca el tiempo de espera en 0 segundos. Esto hará que TCP aborte la conexión cuando se cierre, vacíe los datos y envíe un RST. Ver sección 7.5 y ejemplo 15.21 en UNP.
En python:
def client(host, port):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
s.connect((host, port))
l_onoff = 1
l_linger = 0
s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER,
struct.pack(''ii'', l_onoff, l_linger))
# send data here
s.close()
Para enviar un RST en una conexión TCP, establezca la opción SO_LINGER
en true
con un tiempo de espera cero, luego cierre el socket. Esto restablece la conexión. No tengo idea de cómo hacer eso en Python, o incluso si puedes hacerlo.
Si desea implementar su propio comportamiento sobre las conexiones, creo que debería intentar usar Scapy . Es una biblioteca / herramienta realmente útil. Te permite jugar con paquetes IP / TCP / UDP / ICMP.