Avatar billede tax Nybegynder
21. september 2001 - 12:57 Der er 3 kommentarer og
1 løsning

Anvendelse af sockets i Windows

Jeg er løbet ind i et problem vedrørende sockets. Jeg har lavet en applikation, der kan koble op til en timeserver og modtage en unsigned long, der definerer antallet af sekunder siden 1.1.1900.

Problemet er blot at serveren lukker socketten direkte efter at den har sendt de 4 tegn, som en unsigned long fylder.

Det jeg laver er blot et forstudie til hvordan man anvender sockets, og problemet er så hvordan man håndterer socketforbindelsen, hvis man vil fortsætte med at hente \"rammer\" af 4 tegn fra en server.

Hvordan detekterer jeg at socketten bliver lukket og hvordan detekterer jeg nye modtagne rammer?

/TAX
Avatar billede mickni33 Nybegynder
21. september 2001 - 13:01 #1
serveren skal køre hele tiden da den skal lytte efter klienter. det kan køres ved hjælp af en while løkke som skal ligges ind lige efter listen();.


listen();

while(1){
accept(et eller andet kan ikke huske det)
read();
cout<<\"Server har modtaget\";
write();
cout<<\"Server sender tilbage til klient\";
}
Avatar billede mickni33 Nybegynder
21. september 2001 - 13:03 #2
Hvis serveren skal køre på tid skal tiden defineres inde i while løkken. Men løkken skal være der ellers lukker socket\'en ned med close(sockfd);
Avatar billede tax Nybegynder
21. september 2001 - 13:08 #3
Jeg er i første omgang interesseret i at se det fra klientens synspunkt. Hvordan \"opdager\" han at socketten er blevet lukket. Kommer der et event?
Avatar billede mickni33 Nybegynder
21. september 2001 - 15:01 #4
Bruger du builder c++ eller arbejder du i linux ?
Hvis du selv skal lave forbindelsen skal det se sådan ud.

Client::Client(char ch[]){
sockfd=socket(AF_INET,SOCK_STREAM,0);
    address.sin_family=AF_INET;
    address.sin_addr.s_addr=inet_addr(\"172.16.16.103\");
    address.sin_port=htons(30300);
    len=sizeof(address);
    result=connect(sockfd,(struct sockaddr*)&address,len); //Hvis der ikke er kontakt til serveren retunerer der -1

    if(result==-1){
    perror(\"ooops\");
    exit(1);
    }
write(sockfd,&ch,100);
read (sockfd,&ch,100);
}
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