Dies ist die Hausaufgabe von Advanced Programming for Internet am Harbin Institute of Technology.
Das Repository enthält zwei Projekte:
Ein TCP- und UDP-Multiplexdienst für den Dateiübertragungsdienst mit Select.
Der Server kann sowohl TCP- als auch UDP-Verbindungen akzeptieren.
Paket-Sniffer, die den über Netzwerkschnittstellen in ein und aus einem System fließenden Netzwerkverkehr abfangen.
Der Sniffer verwendet einen Raw-Socket, wenn er in die Recvfrom-Schleife eingefügt wird und alle eingehenden Pakete empfängt. Weitere Informationen.
Hinweis: Sie müssen dieses Projekt unter Linux oder Unix (einschließlich Mac OS X) kompilieren.
Sie können dieses Projekt einfach mit dem Befehl make
“ kompilieren.
Nachdem der Kompilierungsvorgang erfolgreich war, können Sie den Server ausführen:
./server <PortNumber>
Anschließend können Sie einen UDP-Client oder TCP-Client starten:
# for TCP client
./tcp-client <ServerIP> <PortNumber>
# for UCP client
./udp-client <ServerIP> <PortNumber>
Im TCP-Client können Sie Dateien vom Server abrufen:
GET <Path to the file in server>
Bekannte Probleme:
Hinweis: In Linux/Unix-Systemen benötigen Sie Root-Rechte, um Rohpakete auf einer Schnittstelle zu empfangen. Diese Einschränkung ist eine Sicherheitsmaßnahme, da ein Prozess, der Rohpakete empfängt, Zugriff auf die Kommunikation aller anderen Prozesse und Benutzer erhält, die diese Schnittstelle verwenden.
sudo ./packet-sniffer
Alle eingehenden Pakete werden in der Datei packet-sniffer.log
gespeichert.
Dieses Projekt ist Open Source unter der Apache-Lizenz.