Esta es la tarea de Programación Avanzada para Internet en el Instituto de Tecnología de Harbin.
El repositorio contiene dos proyectos:
Un servicio multiplex TCP y UDP para el servicio de transferencia de archivos mediante select.
El servidor puede aceptar conexiones TCP y UDP.
Rastreadores de paquetes que interceptan el tráfico de red que entra y sale de un sistema a través de interfaces de red.
El rastreador utiliza un socket sin formato cuando se coloca en el bucle recvfrom y recibe todos los paquetes entrantes. Obtenga más información.
Nota: Debe compilar este proyecto en Linux o Unix (incluido Mac OS X).
Simplemente puede compilar este proyecto usando el comando make
.
Una vez que la operación de compilación sea exitosa, puede ejecutar el servidor:
./server <PortNumber>
Luego puede iniciar un cliente UDP o un cliente TCP:
# for TCP client
./tcp-client <ServerIP> <PortNumber>
# for UCP client
./udp-client <ServerIP> <PortNumber>
En el cliente TCP, puede obtener archivos del servidor:
GET <Path to the file in server>
Problemas conocidos:
Nota: En los sistemas Linux/Unix, necesita permisos de root para recibir paquetes sin formato en una interfaz. Esta restricción es una precaución de seguridad, porque un proceso que recibe paquetes sin procesar obtiene acceso a las comunicaciones de todos los demás procesos y usuarios que utilizan esa interfaz.
sudo ./packet-sniffer
Todos los paquetes entrantes se volcarán en el archivo packet-sniffer.log
.
Este proyecto es de código abierto bajo licencia Apache.