GUI-chat
-
Hallo,
ich habe mich letztens näher mit der Sockets auseinander gesetzt, und einen ersten Chat mit einem Server (der nur empfangen konnte, eine Konsolenanwendung) und einem Clienten (der nur senden konnte, auch eine Konsolenanwendung) programmiert.Nun habe ich mir gedacht das gleiche als gui-Chat zu programmiern (die Oberfläche ist inzwischen fertig und an den konsolenserver kann ich auch schon senden), wobei man immer empfangen und senden können soll. Mein Problem ist nun dass die funktionen accept() und recv() dass ganze programm stoppen würde und ich nicht mehr auf andere Nachrichten reagieren könnte. Sind ja "Blocking Calls" so glaube ich dass das heißt. Wie kann ich dieses Problem umgehen? Wären Threads eine möglichkeit?
2. Problem: Mein GUI-Chat konnte an den Server nur über die Localhost ip also 127.0.0.1 nicht aber über die Lan-adresse(die ip, die der Computer im Lan hat) senden. Mein Consolen-Client konnte das aber woran könnte das liegen.
Ich hoffe mir kann jemand weiterhelfen und freue mich schon auf antworten!
-
1. Threads sind eine Möglichkeit.
2. Im LAN oder nach außen im INet? Im LAN muss gehen, wenn Du die IP nimmst, die Dein Rechner nach außen im INet hat, und einen Router benutzt, musst Du dafür sorgen, dass der Router Anfragen auf dem entsprechenden Port an den richtigen Rechner weitergibt.
-
Vielen dank für deine antwort dass mit dem Thread hat geklappt und aus irgendeinem Grund kann ich jetzt auch wieder über meine LAN-IP versenden.
-
Da is aber einer fleißig!
Versuch dich mal an IO Completion Ports, damit ist man sehr effizient unterwegs.
-
Eine Frage hab ich jetzt doch noch:
Wenn mein Chat nun minimiert in der Taskleiste ist und ich dann was sende bekommt der andere nicht mit, dass was gesendet wurde. Eine MessageBox wäre meiner meinung nach keine lösung, da der andere sie wegdrücken müsste, was auf die dauer Nerven würde. Aber es wäre eine Lösung, wenn das Programm in der Taskleiste abwechseln Orange-Blau blincken würde (Ich glaub Visual Studio macht das, wenn man zwei Visual-Studios gleichzeitig öffnet). Hat jeman ne idee wie das gehen würde.Edit: Tray-Icon würde auch gehen hab aber keinen Plan wie man das macht. Kennt jemand ein Tutorial??
-
Recht einfach:
FLASHWINFO fwi = {sizeof(fwi), hwnd, FLASHW_TIMERNOFG | FLASHW_ALL }; FlashWindowEx(&fwi);
Alternativ/zusätzlich könntest du auch einen Sound abspielen (mit PlaySound z.B.).
-
Funktioniert perfekt