Avatar billede tax Nybegynder
12. oktober 2001 - 08:34 Der er 8 kommentarer og
1 løsning

Socket i objekt

Jeg har implementeret en socket i et windowsprogram, og er blevet træt af den måde windows anvender sockets på. Dvs at jeg er træt af at skulle hægte socketten på et vindue, for herefter at blande min GUI-kode med min kommunikationskode.

Spørgsmålet er følgende.

Hvad gør man for at kunne oprette en socketforbindelse og anvende den indefra et c++ objekt?

/TAX

P.S.
(14 point -> jeg er ved at være plad)
Avatar billede martinskou Nybegynder
12. oktober 2001 - 08:41 #1
Måske hvis objektet havde sin egen thread? På den måde kunne man vel godt leve med at bruge blocking read/write operationer??
Avatar billede tax Nybegynder
12. oktober 2001 - 08:44 #2
Problemet er at den type sockets jeg kender fra windows kræver et vindue, med messagehandler for at kunne fungere. Eksisterer der en simplere socket til brug under windows API?
Avatar billede martinskou Nybegynder
12. oktober 2001 - 08:55 #3
Ja, du kan oprette en socket uden brug af windows handle, eksempel på opsætning af socket til en server:

SOCKET pServer::SetUpListener(const char* pcAddress, int nPort)
{
    u_long nInterfaceAddr = inet_addr(pcAddress);
    if (nInterfaceAddr != INADDR_NONE) {
        SOCKET sd = socket(AF_INET, SOCK_STREAM, 0);
        if (sd != INVALID_SOCKET) {
            sockaddr_in sinInterface;
            sinInterface.sin_family = AF_INET;
            sinInterface.sin_addr.s_addr = nInterfaceAddr;
            sinInterface.sin_port = nPort;
            if (bind(sd, (sockaddr*)&sinInterface,sizeof(sockaddr_in)) != SOCKET_ERROR) {
                listen(sd, SOMAXCONN);
                return sd;
            }
            else {
                cerr << \"bind() failed\" << endl;
            }
        }
    }
    return INVALID_SOCKET;
}

Jeg har desværre ikke noget \"lille-simpel\" eksempel.
Avatar billede martinskou Nybegynder
12. oktober 2001 - 08:58 #4
Der er en del eksempler her:

http://www.stardust.com/winsock/index.htm

Men det meste er C , og benytter derfor ikke objekter.
Avatar billede tax Nybegynder
12. oktober 2001 - 09:05 #5
Staller klassen ikke når den venter på indkomne forbindelser??? (Listen)

Hvis den gør det kan jeg så kalde andre funktioner i klassen?

Er det muligt at oprette en tråd i klassen, til at passe socketten?
Avatar billede martinskou Nybegynder
12. oktober 2001 - 09:08 #6
Jo, koden kommer fra en server. Denne server opretter en ny thread for hver client-connection.

Den enkelte thread blokerer når den venter på input fra klienten.
Avatar billede tax Nybegynder
12. oktober 2001 - 09:09 #7
Det skal jeg lige kigge på.

Thanx
Avatar billede tax Nybegynder
12. oktober 2001 - 09:22 #8
Tilføj lige et svar. Jeg har jo en foremue jeg skal have fordelt. :)
Avatar billede martinskou Nybegynder
12. oktober 2001 - 09:27 #9
Thx
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester