000
14.05.2006, 15:45 Uhr
CppProgrammer
|
Hallo Ich hab eine Frage über OnReceive() bzw CSocket. Ich schreib gerade einen Client für nen Chat und kann auch alles problemlos an den Chatserver senden und es kommt dort auch korrekt an. Allerdings sendet der Server natürlich auch messages an meinen Client welche ich aber nur manuel (also durch aufrufen einer Funktion die dann Socket.Receive(recv, 1024) macht) empfangen kann. Gibt es keine Funktion die immer automatisch aufgerufen wird, wenn der Server etwas an den Client sendet? Ich hab bereits etwas über OnReceive() gelesen und denke dass das is was ich suche, aber ich weiß nicht wie man es benutzt. Hier mal meine Class:
C++: |
#ifndef _CHAT_H #define _CHAT_H //-----------------------------------------------
static CSocket Socket;
class Chat {
private:
static void SEND(CString msg) { Socket.Send(msg, strlen(msg)); }
public:
static bool Login(CString UserName, CString Password) { CString Return; Socket.Create(); if(Socket.Connect(/*Addresse des chats*/, /*PORT*/)) { SEND(/*SENDET HIER DIE LOGINDATEN*/);
return true; } else return false; }
static void Logout() { Socket.Close(); }
// Hier gehts eigentlich noch weiter aber nur mit Funktionen wie JoinChannel() usw. // aber das ist für meine Frage unwichtig // ...
}; // END of class Chat
//----------------------------------------------- #endif
|
In meinem Dialog hab ich nun zB einen Button für den Login und alles was man für den Chat eben braucht. Darin hab ich einfach die obrige Klasse included und dann in den Funktionen für die Buttons die jeweilige Funktion (zB Chat::Login("someone", "password"); ) aufgerufen. Alles funktioniert eigentlich Fehlerfrei, mein einziges problem is eben nur dass ich die messages im Chat nur durch manueles klicken auf nen RECEIVE button vom server empfangen kann. Wie könnte man das also lösen damit immer wenn der Server etwas sendet der client es automatisch empfängt bzw. eine Funktion aufruft?
Schon mal VIELEN DANK für eure Hilfe = ) Dieser Post wurde am 14.05.2006 um 16:17 Uhr von CppProgrammer editiert. |