Linux-Netzwerkprogrammierung. Was kann ich anfangen? [geschlossen]

8

Ich habe mich vor kurzem für Linux-Netzwerk-Programmierung interessiert und lese ziemlich viel (Beej's Guide to Network Programming). Aber jetzt bin ich verwirrt. Ich würde gerne etwas schreiben, um etwas Übung zu haben, aber ich weiß nicht genau was. Könnten Sie mir bitte ein paar Projekte empfehlen?

Danke.

    
Maksim Skurydzin 18.03.2010, 15:52
quelle

6 Antworten

5

Ich bin mir nicht sicher, wie intensiv Sie Ihre Linux Network Programming-Karriere beginnen möchten, aber wenn Sie nur mit dem Umgang mit Sockets beginnen wollen, sind die einfachsten Beispiele ein Producer / Consumer-Pairing oder ein Echo Server. Eine weitere gute Quelle wäre, einige der Beispiele / Aufgaben aus einer beliebigen Anzahl von Universitäts- / Universitätskursen über verteiltes Rechnen zu betrachten.

Produzent / Verbraucher

Dies könnte in einem Paar Terminals auf Ihrem Computer zum Testen ausgeführt werden. Erstellen Sie zwei Anwendungen:

  • Das Producer-Programm beginnt mit einem Hostnamen und Port, nimmt eine Eingabezeile vom Benutzer, stellt eine Verbindung zum Consumer her, sendet ihm die Eingabe, fragt nach einer anderen Eingabezeile und endet, wenn EOF (Ctrl-D) erreicht wird.
  • Das Consumer-Programm startet mit einem Listening-Port, wartet auf eine Verbindung vom Producer, liest die vom Producer gesendete Nachricht, gibt diese Nachricht aus, schließt die Verbindung mit dem Producer und wird beim Senden eines Interrupts (Ctrl-C) ordnungsgemäß beendet.

Echo Server

Eine ähnliche Idee wie Hersteller / Verbraucher.

  • Echo Server beginnt mit einem Überwachungsport, wartet auf eine Verbindung, liest eine Nachricht vom Client, sendet dieselbe Nachricht zurück an den Client und wird ordnungsgemäß beendet, wenn eine Unterbrechung (Strg-C) gesendet wird.
  • Echo Client startet mit einem Hostnamen und einem Port, nimmt eine Eingabezeile vom Benutzer, verbindet sich mit dem Server, sendet die Eingabe, liest die Antwort zurück, vergleicht die beiden, um zu überprüfen, ob es ein Echo ist, fragt nach einer anderen Zeile Eingabe und endet, wenn EOF erreicht wird.
Ophidian 18.03.2010, 16:11
quelle
6

Schreiben Sie einen sehr einfachen dummen Webserver, der Verbindungen auf Port 80 akzeptiert und Rückseiten bedient.

Dann können Sie es erweitern, um andere Medien herunterzuladen (Bilder usw.).

Dann können Sie einen (vorgefertigten) Skriptsprachen-Interpreter hinzufügen, der Seiten in PHP, Perl usw. verarbeitet.

Sie werden dabei viel lernen.

    
user151323 18.03.2010 15:54
quelle
5

Ich würde damit beginnen, ein einfaches Multiplayer-Spiel wie Tic-Tac-Toe zu entwickeln:

  • benutze ncurses (um deine GUI einfach zu programmieren)
  • Verwalte eine Lobby, in der Spieler teilnehmen können
  • Spiele verwalten (von Spielern gestartet, die nach einem anderen Spieler fragen)
  • Verwalten Sie Leiter oder Rankings
  • Verwalte einen globalen Chat für alle Teilnehmer und einen lokalen Chat für Leute, die
  • spielen

natürlich schlug ich Tic-Tac-Toe vor, aber Sie könnten ein anderes ähnliches Spiel wählen (mit einfachen Regeln). Der wichtige Teil ist, sich um viele Kunden zu kümmern, die auch in Paaren spielen (um Datenweiterleitung und Spiel zu handhaben) Verwalten) und Senden von Zuständen (wie Spieleliste) an Spieler.

Das Gute an diesem Beispiel ist, dass Sie ein Protokoll mit zwei Ebenen haben:

  • erste Ebene für globale Aktionen
  • zweite Ebene, um ein einzelnes Spiel zu verwalten
Jack 18.03.2010 15:57
quelle
3

Ich schlage vor, irgendeine Seite des Computer-Netzwerks zu finden und die relevanten Aufgaben zu lösen. Dort finden Sie eine detaillierte Erklärung des Problems und Aufgaben werden in der zunehmenden Reihenfolge der Komplexität. Sie können solche Webseiten finden, indem Sie diese in Google "inurl: edu Computernetzwerk Labor Aufgaben" suchen. (ohne qoutes)

Hier sind einige ausgezeichnete Aufgaben (mit sehr detaillierten Erklärungen). Versuchen Sie, alle in dieser Reihenfolge zu implementieren.

Ссылка

Ссылка

Ссылка

Ссылка

Ссылка

Ссылка

    
claws 18.03.2010 16:18
quelle
2

Ich kann Ihnen empfehlen, Wireshark zu greifen - es wird Ihnen helfen, das Hin und Her von Netzwerkverkehr zu verstehen.

    
Nate 18.03.2010 15:57
quelle
1

Das zu lesende Buch ist Unix Network Programming von R. Stevens: Ссылка

Das zu erledigende Projekt ist ein TCP-Proxy oder ein Web-Proxy. Machen Sie es single-threaded, aber behandeln Sie natürlich mehrere Verbindungen. Sie sollten es in einer Woche Freizeitarbeit fertigstellen können.

    
MK. 18.03.2010 16:28
quelle

Tags und Links