BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- C++ Linux - Chatsystem Server / Client (http://www.black-board.net/thread.php?threadid=22373)


Geschrieben von Champus am 29.07.2006 um 13:54:

  Linux - Chatsystem Server / Client

Moin,
ich würde mich gerne mal an ein einfaches Chatsystem ranwagen - Server auf Linux mit Sockets, Client unter Windows mit Winsocks.

Habe aber leider keinen Anhaltspunkt - im wesentlichen geht es mir erstmal nur darum, dass der Client einen Befehl / Text o.ä. sendet, und der Server darauf antwortet (oder umgekehrt).

D.h. ich verbinde mit dem Client an die IP und Port des Servers, der Server sendet eine Nachricht bzw. einen Befehlscode der den Client dann dazu veranlasst, dem User eine Nachricht auszugeben, der User gibt dann einen Text ein, dieser soll dann an den Server gesendet und als Variable o.ä. gespeichert werden.

Also: Server -> Client, Client -> Server

Wie baue ich soetwas vorerst sehr einfach auf, gibt es Stichwörter nach denen ich suchen muss, habt ihr vlt. ein Beispielquellcode, ein Tutorial o.ä.?

Gruß
CorvusCorone



Geschrieben von phlox81 am 29.07.2006 um 14:53:

 

Hm, also generell nimmt man zumindest beim Server
für sowas Threads, auch beim Client empfielt sich das.

Evtl. schaust du dir mal wxWidgets an, da gibts eine
Beispiel Anwendung in den Samples zu.
Wohl ohne Threads.
Zu dem gibts auch ne FAQ dazu im wxWidgetsforum:
http://wxforum.shadonet.com/viewtopic.php?t=2736
Mit wxWidgets hättest du auch den Vorteil, das es plattformunabhängig ist.

phlox



Geschrieben von Black Star am 29.07.2006 um 16:37:

 

Qt 4 ist auch platformunabhaengig und ist meiner Meinung nach die deutlich bessere GUI-Bobliothek. Ausserdem bringt Qt Socketunterstuetzung mit.

Fuer den Server braucht man nicht unbedingt Threads (fuer den Client auch nicht). Es gibt unter Linux die Moeglichkeit Sockets zu oeffnen, die sobald eine Anfrage reinkommt den Port weiterhin offen zu halten. Ich weiss jetzt nicht mehr ganz genau wie die Funktionen heissen, aber select (oder fdselect) gehoert dazu.
Diese haben ausserdem den Vorteil, dass man Timeouts setzen kann.

Also nicht die normalen Socket-Funktionen accept, connect, send, recv benutzen sondern select, fcntl etc.
Dazu lassen sich aber sicher Beispiele im Netz finden.

EDIT:
Das hier sieht ganz nett aus:
http://www.lowtek.com/sockets/select.html



Geschrieben von Champus am 29.07.2006 um 17:14:

 

Danke für eure Tipps, aber wxWidgets scheinen mir noch zu kompliziert - ich glaube ich bleibe bei den Sockets.

So wie es aussieht werde ich anscheinend keine GUI nutzen, da sich alles was ich vorhabe auch in den entsprechenden Konsole lösen lässt.

Für weitere Informationen bin ich dankbar, werde aber mal nach Sockets weiterlesen.



Geschrieben von Cpt.Miller am 29.07.2006 um 19:09:

 

Entweder ich weiß etwas falsch oder du hast etwas falsch Verstanden.
Ist wxWidgets / Qt nicht eine Grafikbibliothek? Das schließt dann keine Sockts aus.

Du kannst in Qt ganz einfach eine GUI im Designer basteln, sodass du dann nur noch das Backend schreiben musst.



Geschrieben von Champus am 30.07.2006 um 00:17:

 

Ok, das heißt, wenn ich dann doch nur Konsolenanwendungen schreiben wollte reichen mir ganz normale Sockets - gut, werde mich dann darüber schlau machen. Danke euch für eure Tipps (Links usw. sind trotzdem immer noch erwünscht).



Geschrieben von Misel am 30.07.2006 um 01:21:

 

Du kannst auch ein Programm mit GUI und auf Socketbasis schreiben. Qt 4 bietet nur eine zusätzliche Abstraktionsschicht mit, so dass Du Dich nur noch auf Qt-Sockets konzentrieren müsstest, statt auf Winsocks für Windows, Sockets für Unix/Linux usw.

Qt 4 brächte aber auch den Nachteil, dass Du - solltest Du es überhaupt veröffentlichen - das Programm unter die GPL stellen musst, wenn Du keine Lizenzgebühren an TrollTech bezahlen willst. Aber das ist ja letztlich doch irrelevant für Dich.

Als Übung ist so ein Chatsystem natürlich gut geeignet - ich schätze mal darauf willst Du auch hinaus. Aber ansonsten ist man in Sachen Chat doch mit Jabber, IRC oder gar einem simplen Talkdemon besser bedient.



Geschrieben von phlox81 am 30.07.2006 um 13:47:

 

Zitat:
Original von Black Star
Qt 4 ist auch platformunabhaengig und ist meiner Meinung nach die deutlich bessere GUI-Bobliothek. Ausserdem bringt Qt Socketunterstuetzung mit.


wxWidgets bietet auch Sockets an. Zu dem ist wxWidgets nicht von
der GPL betroffen, so das man später evtl. es auch für kommerzielles nutzen
kann, oder einfach so ohne Quellcode weitergeben kann.
Und was jetzt an QT4 besser sein soll, frag ich mich wirklich Augenzwinkern


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH