Netzwerkprogramm Portabel schreiben
-
Hallo!
Also ich habe vor kurzem angefangen ein Netzwerkprogramm zu schreiben, so mal als kleine Übung ob ich denn das Socket- Tutorial verstanden habe.
Jetzt habe ich Lust bekommen aus dem kleinen Test ein Chatprogramm zu machen. (Eines von UINT_MAX auf dieser Welt...).
Allerdings wollte ich versuchen das Programm [edit]plattformabhängig[/edit] zu halten. So, nun ist klar so einfach geht das nicht. Aber die Winsock funktionen und die BSD- funktionen scheinen sich (sehr) zu ähneln, das bedeut mit ein paar kleinen #ifdefs wirds schon gehen.Mein Problem ist allerdings folgendes:
-
Gleichzeitig eingabe und ausgabe. Ok, unter Unix habe ich die ncurses bibliothek, unter windows wirds auch was geben (conio.h ?).
Nur haben die beiden nun rein überhaupt nichts miteinander zu tun... das würde eher so aussehen dass ich 2 komplett verschiedene clients schreiben müsste...
Ich hab über die C- Standardfunktionen nachgedacht, und wenn es irgendwie möglich sein sollte, dass ich das ding irgendwie portabel krieg, dann würde ich auf jeden fall extrem Bluten. -
Parallelisierung: Wie kann ich gleichzeit neue Verbindungen annehmen und bestehende beibehalten? Wie kann ich den benutzer eintippen lassen während der andere eine nachricht schickt?
Unter Unix gibts da ja den wunderbaren aufruf select(), der sogar unter windows funktioniert. Nur genau der kritische Punkt, nämlich stdin, da unterscheiden sie sich. Unter Unix kein Problem, unter windows- nada.
Deswegen frage ich, ob das ganze überhaupt gar nicht unter keinen umständen geht oder obs doch ne möglichkeit gibt... Ich bin für vorschläge offen.
Ich bin noch in der Planungsphase, ich will keinen Code schreiben, von dem ich weiß dass ich ihn verwerfen werde.mfg, DrPhil_Guth
-
-
DrPhil_Guth schrieb:
Allerdings wollte ich versuchen das Programm zu halten.
fehlt da ein plattformunabhängig ?
lass conio.h weg! für windows nimmt man in erster linie die winsock und windows header! für parallelisierung ist select durchaus möglich, ansonsten threads.
-
DrPhil_Guth schrieb:
[edit]plattformabhängig[/edit]
Fehlt da ein "un"?
greetz, Swordfish
PS: @eddi: die conio.h (Borland sh*t) unter Windows hat nix mit Sockets zu tun.
-
Swordfish schrieb:
DrPhil_Guth schrieb:
[edit]plattformabhängig[/edit]
Fehlt da ein "un"?
lol langsam wirds peinlich
Swordfish schrieb:
PS: @eddi: die conio.h (Borland sh*t) unter Windows hat nix mit Sockets zu tun.
genau, deshalb hab ich ihm doch auch gesagt, dass er sie weglassen soll. verstehe eh nicht wie er überhaupt auf den header kommt
-
hmm... ich glaub ich lass es einfach, man wird schon verstehen was ich meine ...
Mit den sockets allein hat conio.h natürlich nichts zu tun. Aber irgendwie müssen die daten ja ins Programm, und irgendwie müssen die da raus. Und wenn eine nachricht dann ankommt wenn der Benutzer gerade schreibt, dann kommt man meines wissens mit den Standardfunktionen in Schwierigkeiten. Was ich wollte war dass ich es irgendwie machen kann dass man gleichzeitig tippen, aber auch nachrichten empfangen kann. siehe conio.h oder ncurses. Ich hab jetzt ne bibliothek gefunden, nämlich PDC (Public Domain Curses), dass der ncurses/curses bibliothek in unix sein soll. Aber wahrscheinlich werde ich trotzdem bluten...
Naja, ich machs vorerst mal so dass ich server vom client trenne. Wenn mir dann was tolles einfällt, kann ich die beiden ja noch irgendwie integrieren.