Avatar billede riversen Nybegynder
25. april 2003 - 20:29 Der er 25 kommentarer og
1 løsning

Socket

Jeg har en server og en klient...

hvis klient lukker sin socket returnerer isClosed og isConnected på serveren stadig hhv. false og true

man kan jo selv lukke sin socket, men den siger stadig isConnected() er sandt. Kan man sætte noget så den selv closer og disconnecter? Jeg har prøvet at sige setSoTimeout men det ændrer ikke noget synes jeg
Avatar billede arne_v Ekspert
25. april 2003 - 20:43 #1
Avatar billede arne_v Ekspert
25. april 2003 - 20:44 #2
For dn forklaring - der er ikke nogen løsning.
Avatar billede riversen Nybegynder
25. april 2003 - 20:50 #3
jeg forstår ikke rigtig hvordan min ftp server (den vi legede med i går), så kan sige disconnected så snart jeg lukker min klient...unden at fortælle om det.

Er løsningen så at jeg selv implementerer noget med hvornår der sidste er registreret trafik på forbindelse og så sletter referencen til Socket efter fx. 5 min. inaktivitet? Eller er der andre måder at disconnecte på
Avatar billede arne_v Ekspert
25. april 2003 - 20:54 #4
Et par løse ideer:

Lad clienten sende en "jeg stopper nu" kommando til serveren inden
den lukker.

Lad clienten sende "I am alive" messages hver X sekund og hvis serveren ikke
har modtaget noget i 2*X sekunder, så bang.
Avatar billede riversen Nybegynder
25. april 2003 - 20:57 #5
nu sidder jeg og laver ftp server, så det er vist ikke lige standard...dvs. klient vil ikke svare
Avatar billede arne_v Ekspert
25. april 2003 - 21:01 #6
Åh - det er stadig FTP. Nej - det kan du ikke så.
Avatar billede riversen Nybegynder
25. april 2003 - 21:03 #7
åh ja...:-)...synes bare det burde være muligt når nu min "rigtige" server kan tricket...

men så må det bare høre under timeout ligesom hvis klienter stadig er forbundet men bare ikke er aktive
Avatar billede riversen Nybegynder
25. april 2003 - 21:06 #8
men du kan sikkert hjælpe med noget andet jeg ikke lige kan tænke til...bare en lille detalje.

jeg har lavet følgende:
    buffer.append( c.get( Calendar.DAY_OF_MONTH ) + "/" );
    buffer.append( c.get( Calendar.MONTH + 1 ) + "-" );
    buffer.append( c.get( Calendar.YEAR ) + " " );
    // Tid
    buffer.append( c.get( Calendar.HOUR_OF_DAY ) + ":" );
    buffer.append( c.get( Calendar.MINUTE ) + ":" );
    buffer.append( c.get( Calendar.SECOND ) );

som giver teksten: 25/17-2003 21:2:44

som du kan se ville det være lidt pænere med 21:02:44...findes der ikke en nem hurtig formateringsmåde
Avatar billede arne_v Ekspert
25. april 2003 - 21:08 #9
Jo.

SimpleDateFormat
Avatar billede riversen Nybegynder
25. april 2003 - 21:09 #10
øh, der er da vist lige en fejl...haha...25/17 *LOL*
Avatar billede arne_v Ekspert
25. april 2003 - 21:12 #11
DateFormat df = new SimpleDateFormat("dd/MM-yyyy HH:mm:ss");

StringBuffer sb = df.format(c.getTime());
Avatar billede arne_v Ekspert
25. april 2003 - 21:17 #12
Med hensyn til FTP server.

Kan du så ikke "snyde" lidt ?

Downloade sourcen til en eksisterende FTP server og se hvordan de gør.

Det gør ike noget at den er i C. Java sockets bygger direkte ovenpå
native sockets. Så en løsning kan sikkert overføres.
Avatar billede riversen Nybegynder
25. april 2003 - 21:19 #13
det skal næsten være en java ftp før jeg fatter det...og kender ikke lige noget.
Avatar billede riversen Nybegynder
25. april 2003 - 21:19 #14
skal du ha' point i dag også eller hvad?
Avatar billede riversen Nybegynder
25. april 2003 - 21:23 #15
tror jeg har fundet en server
Avatar billede riversen Nybegynder
26. april 2003 - 11:41 #17
nå så lægger jeg selv et svar
Avatar billede arne_v Ekspert
26. april 2003 - 11:48 #18
Øh - skulle jeg have lagt et svar ?
Avatar billede arne_v Ekspert
26. april 2003 - 11:54 #19
Jeg læste dit 21:19:53 kommentar som "Nu må du se at komme op med noget godt".
Avatar billede riversen Nybegynder
26. april 2003 - 12:19 #20
nå ok...overlever du eller skal jeg oprette et nyt?
Avatar billede lborupj Nybegynder
26. april 2003 - 12:37 #21
For at se om en socket er closed, skal du køre hver connection i sin egen tråd. Denne tråd bliver suspended når der ikke er data available (i .read()) hvis man i read får en IOException er forbindelse sandsynligt blevet lukket (eller anden fatal fejl) og så ved du at forbindelsen er lukket.
Avatar billede riversen Nybegynder
26. april 2003 - 12:48 #22
ok, det vil jeg lige lege med
Avatar billede arne_v Ekspert
26. april 2003 - 13:13 #23
Jeg overlever.

Det er også muligt at der kommer en mulighed for at give  mig
point i.f.m. et rigtigt spørgsmål.
Avatar billede riversen Nybegynder
27. april 2003 - 10:19 #24
arne_v: nå, stiller jeg forkert spørgsmål ;-)

har fundet en løsning nu...tror jeg da...readLine returnerer null hvis klienten kobler fra, så det tester jeg på. Så må vi se om det holder.
Avatar billede arne_v Ekspert
27. april 2003 - 10:46 #25
rigtigt spørsgmål != "point til" spørgsmål
Avatar billede riversen Nybegynder
27. april 2003 - 12:09 #26
nåja ok...
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