Avatar billede Swift Praktikant
07. juni 2001 - 13:11 Der er 7 kommentarer og
1 løsning

Winsock: serverfejl v. gentagende forbindelser

Jeg har en server der med winsock funktioner lytter efter clienter.
Der kan fint logge en client på.
Når clienten logger af kaldes closesocket( s ).

Men efterfølgende kan der ikke logge flere clienter på.
Jeg initialiserer IKKE mit socket igen - og får dereved fejl 10022 når jeg kalder accept( s, ( struct sockaddr * )&local, addrlen )

Hvad kan problemet være ??????
Avatar billede peter_m Nybegynder
07. juni 2001 - 13:13 #1
Det er den forket socket du lukker?
Avatar billede Swift Praktikant
07. juni 2001 - 13:16 #2
HELT i begyndelsen af min kode (inden en while(true) løkke) opretter jeg SOCKET s.
Og det er SOCKET s jeg arbejder på hele vejen igennem mit kode...
Og første gang kører det jo også fint...
Avatar billede peter_m Nybegynder
07. juni 2001 - 13:18 #3
Nu er det længe siden jeg har kodet sockets men.

Du har en server socket som forkes således at din klient tager den..så kan andre klienter også få deres forket socket...hvis du lukker din clientsocket så er der intet problem med nye men hvis du lukker din serversocket så skal du lave en ny
Avatar billede Swift Praktikant
07. juni 2001 - 13:23 #4
Jeg kører ikke i tråde - så jeg \"forker\" ikke noget)
Jeg har 2 stykker software. 1 server.exe og en client.exe
Og der kan kun være logget 1 client på ad gangen.
Og når serveren afbryder forbindelsen til en client skal den være klar til at en ny client kan logge på. Og det er HER det går galt!
Avatar billede peter_m Nybegynder
07. juni 2001 - 14:21 #5
lig din oprettelse af socket ind i løkke og
lav while på SOCKET !=NULL

så skulle du lave en ny socket for hver gang du nedlægger dit socket...såfremt det ikke allerede er oprettelse eller noget den stil.
Avatar billede Swift Praktikant
07. juni 2001 - 21:47 #6
Jeg har prøvet at oprette en ekstra funktion der bliver kaldt fra en while(true) løkke.
I den løkke der kaldes kører hele programmet - og i starten af dette oprettes socket vha: \"SOCKET s;\"

Det virker ikke - eller misforstår jeg noget.
Avatar billede Swift Praktikant
08. juni 2001 - 00:41 #7
Jeg kan godt få lov at åbne et passive socket på et nyt portnummer.
Det er som om jeg ikke kan frigive/slette ALT information om det gamle portnummer.
Hvordan gør jeg det ??
Avatar billede Swift Praktikant
09. juni 2001 - 16:36 #8
Løste selv problemet.

Al initialiseringen køres på 1 socket og der accepteres på et andet socket.
Derefter genbruges det 1. socket til at oprette flere forbindelser med.

socketClient = accept( socketServer, ( struct sockaddr * )&local, addrlen );
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