Winsock mit MFC
-
so, habe folgenden code bis jetzt
SOCKET s; long rc; SOCKADDR_IN addr; int startWinsock(void) { WSADATA wsa; return WSAStartup(MAKEWORD(2,0),&wsa); } ... startWinsock(); s=socket(AF_INET,SOCK_STREAM,0); if(s!=INVALID_SOCKET) { memset(&addr,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten addr.sin_family=AF_INET; addr.sin_port=htons(12345); // wir verwenden mal port 12345 addr.sin_addr.s_addr=inet_addr("127.0.0.1"); // zielrechner ist unser eigener rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR)); if(rc!=SOCKET_ERROR) { ... } else {Beep(222,200);} }wsock32.lib und w2_32.lib (oder wie die heißt) sind erfolgreich eingebunden
nur ich bekomm keine connection! wo liegt das problem??
ich habs mit und ohne firewall versuchtMfG
-
MFC ist eigentlich
- CSocket
oder
- CAsyncSocket
-
Starte einfach den passenden Server.

-
-
ok, jetz ma noch ne frage zum empfangen:
ma angenommen ich drücke im programm auf senden, was die nachricht versendet.
wie muss das jetz empfangen werden? reicht es, die methode recieve einmal auszuführen? also dass dann auf ne nachricht gewartet wird? oder muss ich die recirve permanent ausführen und die änderungen (falls eine auftritt) anzeigen lassen (=nachricht)?
-
habs hinbekommen
nur hab ich jetzn neues problem:
damit mein chat-programm auch ne ausgabe hat, soll alles in ner listbox aufgelistet werden. ds problem dabei ist, dass ich zunächst recv ausführen muss, damit ich den neuen wert bekomme. d.h. wenn ich das automatisiert haben möchte, müsste ich das in ne while(1) schreiben. nur dann hängt sich der gui auf und ich kann am sever nix eingeben und auch net ablesenwie löse ich das sinnvoll? sodass ich den client nur verbinden mus und sich die liste aktualisiert, sobald der client oder server etwas gesendet hat?
-
geht das überhaupt? ich wüsst echt nicht, wie das gehn könnte...

-
Denkanstoß:
2 Threads.
"Mainthread" erstellt GUI, startet "listener-Thread", verwaltet GUI
"listener-Thread" lauscht dem Server und meldet sich bei "Mainthread" wenn's was neues gibtGreetz, Swordfish
-
danke, gute idee.
nur wie erzeuge ich 2 threads? welche funktion muss ich da verwenden?
-
CreateThread()
Greetz, Swordfish
-
Swordfish schrieb:
CreateThread()
Ist bei der Verwendung von MFC und CRT zu vermeinden.
_beginthreadex oder AfxBeginThread!