Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
VerruecktesHuhn Super JLI'ler
Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 26.04.2003, 09:00 Titel: winsock fragen |
|
|
Hi, alle zusammen!
Hab mal wieder nen paar Fragen, da ich mich nich allzusehr mit winsock befasst hab, was sich jetzt bemerkbar macht
Also: Man muss ja für jede Connection ein Sockethandle haben? Also müsste ich, wenn meine Anwendung mehrere Client-Connections hat mehrere Sockethandles haben? Demzufolge müsst ich die Receive Funktion für jede Connection aufrufen? Das erscheint mir ein bissl stressig, deswegen frag ich lieber nochmal |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 26.04.2003, 12:14 Titel: |
|
|
Wenn du vom Server sprichst ist das korrekt(so haben wir das bei Scramble jedenfalls gemacht). _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
Daniel Mini JLI'ler
Anmeldedatum: 15.08.2002 Beiträge: 3 Wohnort: Leichlingen Medaillen: Keine
|
Verfasst am: 24.05.2003, 14:58 Titel: |
|
|
Dat stimmt schon, aber du kannst es dir vereinfachen indem du eine einfache Socketklasse schreibst |
|
Nach oben |
|
|
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 24.05.2003, 15:08 Titel: |
|
|
Ich war zu faul um ne Liste zu benutzen und hab Arrays benutzt (30 Handle und 30 bool varialben) das reicht _________________ http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.
Never touch a running System - der Systemling |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 24.05.2003, 16:29 Titel: |
|
|
recv musst du doch nur für die Clients aufrufen, die dir ne Message schicken...
Du musst halt einfach die fd_read Funktion dazu nutzen und damit abfragen, ob dir ein Client ne Message geschickt hat, und wenn ja fragst du die dann halt mit recv ab. _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 24.05.2003, 16:42 Titel: |
|
|
Man weis ja nicht von wem man ne nachricht bekommen hat deshalb muss man alle abfragen, ich mach das so:
Code: |
case FD_READ:
//soviel durchgänge wie Clienten
for(int z=0;z<AnzahlSocket;z++)
{
int ilen;
char data[255];
ilen=recv(ConnectingSocket[z],data,255,0);
data[ilen]='\0';
if(data[0]=='B'&& data[1]=='L' && data[2]=='D' && data[3]==':')
{
//Nachricht vom Client das er sich ausgelogt hat
if(data[5]=='#' && data[6]=='1' && data[7]=='_' && data[8]=='0' && data[9]=='0')
{
// MessageBox(hWnd,"Client hat sich ausgelogt","Client...",MB_OK);
char EndString[256];
sprintf(EndString,"Client hat sich ausgelogt");
for(int y=0;y<AnzahlSocket;y++)
{
BLDSendMessage(ConnectingSocket[y],EndString,false);
}
//Fügt die Nachricht bei den eigenen Strings hinzu
char AtServerMessage[255];
sprintf(AtServerMessage,"Msg: %s",EndString);
CharUmwandeln(AtServerMessage,strlen(AtServerMessage));
SocketBelegt[z]=0;
ConnectingSocket[z]=0;
AnzahlSocket--;
}
//ansonst txt nachricht
else
{
for(int y=0;y<AnzahlSocket;y++)
{
BLDSendMessage(ConnectingSocket[y],data,true);
}
data[0]='M';
data[1]='s';
data[2]='g';
data[3]=':';
CharUmwandeln(data,ilen);
}
}
}
|
_________________ http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.
Never touch a running System - der Systemling |
|
Nach oben |
|
|
|