accept
-
das ist ja nur ein int, der zeigt ob die verbindung zustande gekommen ist.
was soll ich denn damit anfangen?
-
sockets schrieb:
was soll ich denn damit anfangen?
Prüfen wäre mal ein guter erster Schritt. Eine grundlegende Fehlerbehandlung kann jedenfalls nicht schaden, wenn man das Problem eingrenzen will.
-
gut, und danach? wie kriege ich die richtige ip adresse?
-
sockets schrieb:
gut, und danach? wie kriege ich die richtige ip adresse?
GetPeerName gibt bei dir also immer TRUE zurück?
-
nicht ganz, eine 1 aber ich glaube das ist dazu äquivalent

-
Wo steht denn dieser Code überhaupt?
Was genau ist ListenSocket?
Was liefert Accept zurück?
-
in der klasse die von casyncsocket abgeleitet ist steht die onaccept methode
void client::OnAccept(int nErrorCode) if (nErrorCode == 0) // Wenn keine Fehler auftreten, die Funktion zum Akzeptieren in der Dialogklasse aufrufen ((CNetzwerkClientKaSimDlg*)m_pWnd)->OnAkzeptieren(); }diese ruft die methode onakzeptieren in der dialog klasse auf
void CNetzwerkClientKaSimDlg::OnAkzeptieren() // Wird aufgerufen, wenn der Server eine Anfrage akzeptiert { struct sockaddr_in sa; int iLen = sizeof(sa); UCHAR adresse[4]; string ip; int result; int i; for (i=0;i<=30;i++){ clients[i].GetPeerName((SOCKADDR*)&sa, &iLen); adresse[0]=sa.sin_addr.S_un.S_un_b.s_b1; adresse[1]=sa.sin_addr.S_un.S_un_b.s_b2; adresse[2]=sa.sin_addr.S_un.S_un_b.s_b3; adresse[3]=sa.sin_addr.S_un.S_un_b.s_b4; ip=ListenSocket.toString(adresse[0])+"."+ListenSocket.toString(adresse[1])+"."+ListenSocket.toString(adresse[2])+"."+ListenSocket.toString(adresse[3]); if(ip=="204.204.204.204"){ result=ListenSocket.Accept(clients[i]); break; } } for(int j=0;j<=30;j++){ if(j==i) j++; if(clients[j].GetPeerName((SOCKADDR*)&sa, &iLen)==clients[i].GetPeerName((SOCKADDR*)&sa, &iLen)) clients[j].Close(); } }ListeSocket ist ein
[/cpp]
class client : public CAsyncSocket
[cpp]accept liefert 1 zurück
-
GetPeerName sollte erst dann etwas Sinnvolles liefern können, wenn du diesen Socket erfolgreich an Accept übergeben hast.
-
ja jetzt gehts, danke schön aber
woher weiss ich jetzt welche ips bereits eingetragen sind?
ich packe die clienten ja in ein array indem ich accept aufrufe.
wie kann ich dann auf ein objekt in einem array zugreifen und mir informationen darüber holen?
ich möchte dass sich ein client anmeldet und wenn der schon angemeldet war dann wieder austragen.
oder zb. das ganze array durchlaufen und alle angemeldeten clienten bzw akzeptierten clienten ausgeben können.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.