Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hi,

ich habe eigentlich nur eine Grundsätzliche Frage zur Netzwerkprogrammierung. Ich habe mir entsprechende Tutorials aus dem Netz gesucht und das ganze mal nach programmiert. Es war auch nicht schwer zu verstehen. Dabei bin ich dann auf folgendes Problem gestoßen oder besser gesagt Frage.

Ein Client zu programmieren scheint nicht sonderlich schwer zu sein. Aber wie sieht es mit einem Server aus????

Ich möchte nur einen kleinen Server haben, der wenn er eine Nachricht bekommt eine Meldung ausgibt. Wie funktioniert der Server denn grundlegend?

Der Server bleibt die ganze Zeit in der Schleife und wartet bis er eine Nachricht bekommt? Ich habe gelesen, dass da irgend etwas von Messages gesagt wurde. Der Server bekommt eine Message und reagiert. Im Prinzip so wie bei einem Fenster. Nur wie????

Beim Client initialisiere ich zu erst den Socket "WSAStartup", dann bilde ich ein Socket, lege die Adresse des Empfängers, das Protokoll und sonstige Dinge fest. Dann kann ich per connect auf den Server connecten.

Doch wie läuft das bei dem Server? Socket initialisieren klingt ja noch sinnvoll. Doch spätestens bei dem connect sollte das ja anders laufen.

Gruß

BabyMitSchnully

Juhu,

danke schön. Es hat geklappt. Ich kann jetzt consolen Server und Client programmieren. Ist gar nicht so schwer eigentlich sogar sehr leicht zu programmieren. Macht so gar tiersich Spaß.

Außerdem habe ich heute noch eine ganze Menge Dialoge programmiert. Ich bin einfach zu kompliziert an die ganze Sach ran gegangen, dass ist eigentlich ganz einfach.

Hallo,

Original geschrieben von carstenj

einen Server zu programmieren ist nur vermeindlich schwieriger. Der muss nämlich nicht aktiv "connecten", sondern einfach nur faul "lauschen" (listen) :).

Ein bisschen mehr macht der Server schon, zumal die Funktionsweise auch vom eingesetzten Protokoll abhängig ist. Mit listen() wird nur die Länge der Warteschlange für einen Socket auf Server-Seite angegeben. Um Daten empfangen/senden zu können, musst Du mit accept() und read()/write() die Daten weiter verarbeiten. Bei mehreren offenen Sockets sollte mit einem select-loop gearbeitet werden bzw. der Server forken().

Nic

Hi,

wenn du schon solche Begriffe in den Taum wirfst, dann erkläre sie auch bitte :D

Ist wohl eine Krankheit eines Programmierers, dass er immer alles wissen muss. Womit mache ich was????

Was ist denn forken() oder was machen die ganzen anderen Funktionen, die du da hingeschrieben hast?????

Hallo,

forken bedeutet, einen neuen Prozess zu erzeugen. Der eigentliche Elternprozess wird quasi kopiert, und für jede eingehene Verbindung wird ein neuer Child Prozess "geforkt". Diese arbeiten dann mehr oder weniger unabhängig voneinander.

Das betrifft aber ausschließlich Linux und Konsorten.

Selct wird hier erklärt:

http://www.c-worker.ch/tuts/select.html

accept hier:

http://www.ecst.csuchico.edu/%7Ebeej/guide/net/html/syscalls.html#accept

Hallo,

Original geschrieben von BabyMitSchnully

Hi,

wenn du schon solche Begriffe in den Taum wirfst, dann erkläre sie auch bitte :D

Ist wohl eine Krankheit eines Programmierers, dass er immer alles wissen muss.

Nein, das nicht (sollte man auch nicht voraussetzen). Allerdings lassen sich mit den oben genannten Links und den Stichworten über google (oder eine andere Suchmaschine) genügend Tutorials und Links mit ausführlichen Erklärungen finden.

Sehr umfangreich ist die Socket-FAQ:

http://www.developerweb.net/sock-faq/

Ein übersichtliches Beispiel zur Client/Server Programmierung gibts unter anderem hier:

http://pandonia.canberra.edu.au/ClientServer/socket/socket.html

Mit fork() werden Kindprozesse erzeugt, die beispielsweise die Abarbeitung von Requests mehrere Clients übernehmen können. Select() wird verwendet, um mehrere offenen Sockets auf eingehende Daten zu überprüfend; das kann blockierend oder non-Blocking geschehen. Im Non-Blocking Fall kehrt der Aufruf von select() auch dann zurück, wenn auf den Sockets keine Daten anliegen.

Nic

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.