/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Socket Client/Server: Hvordan detekterer s~
Fra : Dahl


Dato : 29-12-01 01:57

Hejsa,

Jeg sidder og roder med lidt socket programmering. Jeg har lavet en client
og en server der kan accepterer at flere clienter connecter til den.

Det funker sådan set fint, men hvordan kan serveren se om en client
connection stadig er aktiv. Man kan jo ikke altid sikre at clienten siger
pænt farvel (o:

vh
Dahl



 
 
Brian Matzon (29-12-2001)
Kommentar
Fra : Brian Matzon


Dato : 29-12-01 02:20

"Dahl" <[NOSPAM]jimmichr@hotmail.com[NOSPAM]> wrote in message
news:a0j3vn$2eg8$1@news.cybercity.dk...
> Hejsa,
>
> Jeg sidder og roder med lidt socket programmering. Jeg har lavet en client
> og en server der kan accepterer at flere clienter connecter til den.
>
> Det funker sådan set fint, men hvordan kan serveren se om en client
> connection stadig er aktiv. Man kan jo ikke altid sikre at clienten siger
> pænt farvel (o:

Det kan den faktisk heller ikke!
En connection dør først i det du skriver til den/læser fra den og den
failer.
Derfor kan du typisk risikere at du har nogle "zombie" connections som er
i live, indtil du skriver til dem.
Spørgsmålet er så hvordan man vil takle disse zombie connections - typisk
vil man lave client/server pinge hinanden efter et givet interval.
*Jeg* kan ikke umiddelbart komme i tanke om en bedre måde...

Hvordan vil folk takle dette problem ud over at pinge?

/Brian Matzon




Dahl (29-12-2001)
Kommentar
Fra : Dahl


Dato : 29-12-01 03:30

Skod skod skod, det var ikke lige det jeg ville høre (o: Jeg håber andre kan
komme med en smartere løsning.

Sagen er nemlig den at protokollen mellem client og server er en simple
client-spørger server-svarer kommunikation. Dvs at serveren aldrig sender
noget til clienten af fri vilje, og det vil derfor være at komplicere både
server og specielt clienten at implementere ping-pong kommandoer i
protokollen.

Min bedste løsning nu er at serveren altid betragter en client connection
som død hvis den ikke har modtaget en kommando indenfor et bestemt
tidsinterval (f.eks. 10 minutter). Det vil funke men det er jo bestemt ikke
på den "fede" måde

Håber på andre ideer...

vh
Dahl

"Brian Matzon" <brian@matzon.dk> wrote in message
news:3c2d1b59$0$55612$edfadb0f@dspool01.news.tele.dk...
> "Dahl" <[NOSPAM]jimmichr@hotmail.com[NOSPAM]> wrote in message
> news:a0j3vn$2eg8$1@news.cybercity.dk...
> > Hejsa,
> >
> > Jeg sidder og roder med lidt socket programmering. Jeg har lavet en
client
> > og en server der kan accepterer at flere clienter connecter til den.
> >
> > Det funker sådan set fint, men hvordan kan serveren se om en client
> > connection stadig er aktiv. Man kan jo ikke altid sikre at clienten
siger
> > pænt farvel (o:
>
> Det kan den faktisk heller ikke!
> En connection dør først i det du skriver til den/læser fra den og den
> failer.
> Derfor kan du typisk risikere at du har nogle "zombie" connections som er
> i live, indtil du skriver til dem.
> Spørgsmålet er så hvordan man vil takle disse zombie connections - typisk
> vil man lave client/server pinge hinanden efter et givet interval.
> *Jeg* kan ikke umiddelbart komme i tanke om en bedre måde...
>
> Hvordan vil folk takle dette problem ud over at pinge?
>
> /Brian Matzon
>
>
>



Soeren Dalby (29-12-2001)
Kommentar
Fra : Soeren Dalby


Dato : 29-12-01 15:12

Din løsning er klassisk. Det kaldes en keep-alive message, og tjener kun det
formål, at lade serveren vide, at klienten stadig lever.

Internet servere med session-data såsom ASP og JSP/Servlet har samme
problematik. For sidstnævnte sætter man et max-interval og hvis serveren
ikke hører fra klienten inden for dette tidsrum, dør sessionen - jeg antager
at ASP har noget tilsvarende.


Med venlig hilsen / best regards

Soeren Dalby



"Dahl" <[NOSPAM]jimmichr@hotmail.com[NOSPAM]> wrote in message
news:a0j9et$2oot$1@news.cybercity.dk...
> Skod skod skod, det var ikke lige det jeg ville høre (o: Jeg håber andre
kan
> komme med en smartere løsning.
>
> Sagen er nemlig den at protokollen mellem client og server er en simple
> client-spørger server-svarer kommunikation. Dvs at serveren aldrig sender
> noget til clienten af fri vilje, og det vil derfor være at komplicere både
> server og specielt clienten at implementere ping-pong kommandoer i
> protokollen.
>
> Min bedste løsning nu er at serveren altid betragter en client connection
> som død hvis den ikke har modtaget en kommando indenfor et bestemt
> tidsinterval (f.eks. 10 minutter). Det vil funke men det er jo bestemt
ikke
> på den "fede" måde
>
> Håber på andre ideer...
>
> vh
> Dahl
>
> "Brian Matzon" <brian@matzon.dk> wrote in message
> news:3c2d1b59$0$55612$edfadb0f@dspool01.news.tele.dk...
> > "Dahl" <[NOSPAM]jimmichr@hotmail.com[NOSPAM]> wrote in message
> > news:a0j3vn$2eg8$1@news.cybercity.dk...
> > > Hejsa,
> > >
> > > Jeg sidder og roder med lidt socket programmering. Jeg har lavet en
> client
> > > og en server der kan accepterer at flere clienter connecter til den.
> > >
> > > Det funker sådan set fint, men hvordan kan serveren se om en client
> > > connection stadig er aktiv. Man kan jo ikke altid sikre at clienten
> siger
> > > pænt farvel (o:
> >
> > Det kan den faktisk heller ikke!
> > En connection dør først i det du skriver til den/læser fra den og den
> > failer.
> > Derfor kan du typisk risikere at du har nogle "zombie" connections som
er
> > i live, indtil du skriver til dem.
> > Spørgsmålet er så hvordan man vil takle disse zombie connections -
typisk
> > vil man lave client/server pinge hinanden efter et givet interval.
> > *Jeg* kan ikke umiddelbart komme i tanke om en bedre måde...
> >
> > Hvordan vil folk takle dette problem ud over at pinge?
> >
> > /Brian Matzon
> >
> >
> >
>
>



Dennis Thrysøe (29-12-2001)
Kommentar
Fra : Dennis Thrysøe


Dato : 29-12-01 19:44

Dahl wrote:

> Skod skod skod, det var ikke lige det jeg ville høre (o: Jeg håber andre kan
> komme med en smartere løsning.
>
> Sagen er nemlig den at protokollen mellem client og server er en simple
> client-spørger server-svarer kommunikation. Dvs at serveren aldrig sender
> noget til clienten af fri vilje, og det vil derfor være at komplicere både
> server og specielt clienten at implementere ping-pong kommandoer i
> protokollen.
>
> Min bedste løsning nu er at serveren altid betragter en client connection
> som død hvis den ikke har modtaget en kommando indenfor et bestemt
> tidsinterval (f.eks. 10 minutter). Det vil funke men det er jo bestemt ikke
> på den "fede" måde


Sådan virker HTTP også. Som udgangspunkt lukkes forbindelsen lige efter
serveren er færdig med at svare.

Hvis klienten veder om det kan forbindelsen holdes åben i en nærmere
angivet periode, som serveren selvfølgelig selv kan vælge om den vil
leve op til. Klienten skal så, hvis den vil holde forbindelsen åben,
sørge for at forny tidsfristen inden den løber ud.

-dennis


Dahl (29-12-2001)
Kommentar
Fra : Dahl


Dato : 29-12-01 20:15

Ok tak for svarene,

Af anden årsag besluttede jeg at bruge kommunikere med objects mellem client
og server ved brug af ObjectOutputStream og ObjectInputStream og her bliver
der faktisk kastet af exception af ObjectInputStream.readObject() hvis
socket forbindelsen er død.

Dahl

"Dennis Thrysøe" <dt@netnord.dk> wrote in message
news:3C2E0EE6.8050709@netnord.dk...
> Dahl wrote:
>
> > Skod skod skod, det var ikke lige det jeg ville høre (o: Jeg håber andre
kan
> > komme med en smartere løsning.
> >
> > Sagen er nemlig den at protokollen mellem client og server er en simple
> > client-spørger server-svarer kommunikation. Dvs at serveren aldrig
sender
> > noget til clienten af fri vilje, og det vil derfor være at komplicere
både
> > server og specielt clienten at implementere ping-pong kommandoer i
> > protokollen.
> >
> > Min bedste løsning nu er at serveren altid betragter en client
connection
> > som død hvis den ikke har modtaget en kommando indenfor et bestemt
> > tidsinterval (f.eks. 10 minutter). Det vil funke men det er jo bestemt
ikke
> > på den "fede" måde
>
>
> Sådan virker HTTP også. Som udgangspunkt lukkes forbindelsen lige efter
> serveren er færdig med at svare.
>
> Hvis klienten veder om det kan forbindelsen holdes åben i en nærmere
> angivet periode, som serveren selvfølgelig selv kan vælge om den vil
> leve op til. Klienten skal så, hvis den vil holde forbindelsen åben,
> sørge for at forny tidsfristen inden den løber ud.
>
> -dennis
>



Soeren Dalby (29-12-2001)
Kommentar
Fra : Soeren Dalby


Dato : 29-12-01 21:19

Interessant - jeg mente ellers bestemt at HTTP var session-løs. Hvad betyder
det at have en HTTP session ??

For serverside programmer er det jo rart at kunne have tilstande og andre
data gemt for en brugersession, men hvad kan HTTP gemme på tværs af kald for
samme session ??


--
Med venlig hilsen / best regards

Soeren Dalby

"Dennis Thrysøe" <dt@netnord.dk> wrote in message
news:3C2E0EE6.8050709@netnord.dk...
> Dahl wrote:
>
> > Skod skod skod, det var ikke lige det jeg ville høre (o: Jeg håber andre
kan
> > komme med en smartere løsning.
> >
> > Sagen er nemlig den at protokollen mellem client og server er en simple
> > client-spørger server-svarer kommunikation. Dvs at serveren aldrig
sender
> > noget til clienten af fri vilje, og det vil derfor være at komplicere
både
> > server og specielt clienten at implementere ping-pong kommandoer i
> > protokollen.
> >
> > Min bedste løsning nu er at serveren altid betragter en client
connection
> > som død hvis den ikke har modtaget en kommando indenfor et bestemt
> > tidsinterval (f.eks. 10 minutter). Det vil funke men det er jo bestemt
ikke
> > på den "fede" måde
>
>
> Sådan virker HTTP også. Som udgangspunkt lukkes forbindelsen lige efter
> serveren er færdig med at svare.
>
> Hvis klienten veder om det kan forbindelsen holdes åben i en nærmere
> angivet periode, som serveren selvfølgelig selv kan vælge om den vil
> leve op til. Klienten skal så, hvis den vil holde forbindelsen åben,
> sørge for at forny tidsfristen inden den løber ud.
>
> -dennis
>



Dennis Thrysøe (30-12-2001)
Kommentar
Fra : Dennis Thrysøe


Dato : 30-12-01 15:31

Soeren Dalby wrote:

> Interessant - jeg mente ellers bestemt at HTTP var session-løs. Hvad betyder
> det at have en HTTP session ??
>
> For serverside programmer er det jo rart at kunne have tilstande og andre
> data gemt for en brugersession, men hvad kan HTTP gemme på tværs af kald for
> samme session ??

Når man snakker om HTTP sessions er det ikke på connection niveau. HTTP
er ganske rigtigt stateless, men mange servere simulerer sessions ved at
give en cookie til browseren, som den sender med til alle fremtidige
requests.

Denne cookie kan så bruges til at genkende 'sessionen'. Serveren har så
mulighed for at time en session ud, når den er træt af at vente på en
klients næste request.

Hvis ikke klienten understøtter cookies, kan man også bruge argumenter i
URL'en kombineret med 'URL rewriting'. Det vil sige at sørge for, at
ALLE links rundt omkring (hvis vi snakker HTML) skal indeholde f.eks.
?JSESSIONID=76fds76dsf76fd76dsf76fds.

-dennis


Benny Andersen (29-12-2001)
Kommentar
Fra : Benny Andersen


Dato : 29-12-01 20:50

On Sat, 29 Dec 2001 01:56:32 +0100, "Dahl" <[NOSPAM]jimmichr@hotmail.com[NOSPAM]> wrote:

>Hejsa,
>
>Jeg sidder og roder med lidt socket programmering. Jeg har lavet en client
>og en server der kan accepterer at flere clienter connecter til den.
>
>Det funker sådan set fint, men hvordan kan serveren se om en client
>connection stadig er aktiv. Man kan jo ikke altid sikre at clienten siger
>pænt farvel (o:
>
Baseres kommunikationen på TCP (og ikke UDP), ligger det underliggende ping-pong i netværksprotokollen, og serverens registering af
clienten nedlukning af forbindelse, er i Java f.eks implementeret sådan at der kastes en IOException fra ObjectInputStream.readObject();

Følgende lille server, venter på en string fra en connectende client, og giver en (fjollet) string tilbage. Når clienten lukker
forbindelsen, afslutter serverthread's run() metode.

import java.io.*;
import java.net.*;

public class Server {

   public Server()
   {
         
      System.out.println("Starting server");
      int threadNum = 1;
      try {
         ServerSocket server = new ServerSocket( 5000, 100 );
      
         while ( true ) {
            // hænger indtil en klient connecter på port 5000, og starter derefter en thread
            new TCPSessionThread(server.accept(), threadNum++).start();
         }
      }
      catch ( IOException io ) {
         // accept throws
         io.printStackTrace();
         System.exit(0);
      }
   }

   public static void main( String args[] )
   {
      System.out.println("Starting server");
      Server app = new Server();
   }
}

class TCPSessionThread extends Thread
{
   ObjectOutputStream output;
   ObjectInputStream input;
   Socket connection;
   private int tn;
   
   TCPSessionThread(Socket argConnection, int threadNum) {
      connection = argConnection;
      tn = threadNum;
      
   }
   
   public void run() {
      try {
         output = new ObjectOutputStream(connection.getOutputStream() );
         output.flush();
         input = new ObjectInputStream(connection.getInputStream() );
         System.out.println( "connection established in thread "+tn);
         String message;
         
         while (true) {
            try {
               message = (String) input.readObject();
               if (message.toLowerCase().equals("andrei"))
                  sendString("Jeg snakker med en brevdue");
               else if (message.toLowerCase().equals("susanne"))
                  sendString("Jeg snakker med rigtig høne");
               else   
                  sendString("Jeg snakker med en anonymous rex");
            }
            catch(ClassNotFoundException ccnfex) {
                System.out.println("class not fond exception" );
             }
            catch(IOException ioex) {
               System.out.println("Connection lost in thread "+tn);
               break;
            }
         }
         output.close();
         input.close();
         connection.close();
      }
      catch(IOException ex) {
         ex.printStackTrace();
         System.exit(1);
      }
      
   }
   private void sendString( String s )
   {
      try {
         output.writeObject(s);
         output.flush();
      }
      catch ( IOException cnfex ) {
         System.out.println("Error writing object" );
      }
   }

}

   
MVH
Benny Andersen

Soeren Dalby (30-12-2001)
Kommentar
Fra : Soeren Dalby


Dato : 30-12-01 19:02

Men hvad nu, hvis maskinen crasher eller programmet tvinges til at stoppe
via en kill ea. Kan man da også være sikker på, at streamen reagerer på
samme måde ??


--
Med venlig hilsen / best regards

Soeren Dalby

"Benny Andersen" <be99@worldonline.dk> wrote in message
news:3c2e1cf7.32553789@news.worldonline.dk...
> On Sat, 29 Dec 2001 01:56:32 +0100, "Dahl"
<[NOSPAM]jimmichr@hotmail.com[NOSPAM]> wrote:
>
> >Hejsa,
> >
> >Jeg sidder og roder med lidt socket programmering. Jeg har lavet en
client
> >og en server der kan accepterer at flere clienter connecter til den.
> >
> >Det funker sådan set fint, men hvordan kan serveren se om en client
> >connection stadig er aktiv. Man kan jo ikke altid sikre at clienten siger
> >pænt farvel (o:
> >
> Baseres kommunikationen på TCP (og ikke UDP), ligger det underliggende
ping-pong i netværksprotokollen, og serverens registering af
> clienten nedlukning af forbindelse, er i Java f.eks implementeret sådan at
der kastes en IOException fra ObjectInputStream.readObject();
>
> Følgende lille server, venter på en string fra en connectende client, og
giver en (fjollet) string tilbage. Når clienten lukker
> forbindelsen, afslutter serverthread's run() metode.
>
> import java.io.*;
> import java.net.*;
>
> public class Server {
>
> public Server()
> {
>
> System.out.println("Starting server");
> int threadNum = 1;
> try {
> ServerSocket server = new ServerSocket( 5000, 100 );
>
> while ( true ) {
> // hænger indtil en klient connecter på port 5000, og starter derefter en
thread
> new TCPSessionThread(server.accept(), threadNum++).start();
> }
> }
> catch ( IOException io ) {
> // accept throws
> io.printStackTrace();
> System.exit(0);
> }
> }
>
> public static void main( String args[] )
> {
> System.out.println("Starting server");
> Server app = new Server();
> }
> }
>
> class TCPSessionThread extends Thread
> {
> ObjectOutputStream output;
> ObjectInputStream input;
> Socket connection;
> private int tn;
>
> TCPSessionThread(Socket argConnection, int threadNum) {
> connection = argConnection;
> tn = threadNum;
>
> }
>
> public void run() {
> try {
> output = new ObjectOutputStream(connection.getOutputStream() );
> output.flush();
> input = new ObjectInputStream(connection.getInputStream() );
> System.out.println( "connection established in thread "+tn);
> String message;
>
> while (true) {
> try {
> message = (String) input.readObject();
> if (message.toLowerCase().equals("andrei"))
> sendString("Jeg snakker med en brevdue");
> else if (message.toLowerCase().equals("susanne"))
> sendString("Jeg snakker med rigtig høne");
> else
> sendString("Jeg snakker med en anonymous rex");
> }
> catch(ClassNotFoundException ccnfex) {
> System.out.println("class not fond exception" );
> }
> catch(IOException ioex) {
> System.out.println("Connection lost in thread "+tn);
> break;
> }
> }
> output.close();
> input.close();
> connection.close();
> }
> catch(IOException ex) {
> ex.printStackTrace();
> System.exit(1);
> }
>
> }
> private void sendString( String s )
> {
> try {
> output.writeObject(s);
> output.flush();
> }
> catch ( IOException cnfex ) {
> System.out.println("Error writing object" );
> }
> }
>
> }
>
>
> MVH
> Benny Andersen



Benny Andersen (31-12-2001)
Kommentar
Fra : Benny Andersen


Dato : 31-12-01 03:12

On Sun, 30 Dec 2001 19:02:25 +0100, "Soeren Dalby" <nospam@nospam.com> wrote:

>Men hvad nu, hvis maskinen crasher eller programmet tvinges til at stoppe
>via en kill ea. Kan man da også være sikker på, at streamen reagerer på
>samme måde ??
<CUT>
Tænker du på hvis clienten cracher? IOException giver ingen diffentiering mellem 'pænt farvel' og nedlukning af andre årsager. Hvis der er
behov for det, kan man vel lave en protocol, hvor klienten f.eks sender en 'bye' string før afslutning.
Hvis Serveren cracher, kastes der en IOException hos clienten, når socket forbindelsen søges anvendt til kommunikation.

MVH Benny Andersen

Brian Matzon (30-12-2001)
Kommentar
Fra : Brian Matzon


Dato : 30-12-01 22:26


"Benny Andersen" <be99@worldonline.dk> wrote in message
news:3c2e1cf7.32553789@news.worldonline.dk...
> Baseres kommunikationen på TCP (og ikke UDP), ligger det underliggende
ping-pong i netværksprotokollen, og serverens registering af
> clienten nedlukning af forbindelse, er i Java f.eks implementeret sådan at
der kastes en IOException fra ObjectInputStream.readObject();
<SNIP>
Men så antager du også at det er tovejs kommunikation. Hvad nu når det er en
monolog, hvor serveren
sender beskeder til klienten hvert 15 time, hvordan kan den så vide om en
connection er i live, andet end
hvert 15 time?

/Brian Matzon



Benny Andersen (31-12-2001)
Kommentar
Fra : Benny Andersen


Dato : 31-12-01 03:12

On Sun, 30 Dec 2001 22:25:31 +0100, "Brian Matzon" <brian@matzon.dk> wrote:

>
>"Benny Andersen" <be99@worldonline.dk> wrote in message
>news:3c2e1cf7.32553789@news.worldonline.dk...
>> Baseres kommunikationen på TCP (og ikke UDP), ligger det underliggende
>ping-pong i netværksprotokollen, og serverens registering af
>> clienten nedlukning af forbindelse, er i Java f.eks implementeret sådan at
>der kastes en IOException fra ObjectInputStream.readObject();
><SNIP>
>Men så antager du også at det er tovejs kommunikation. Hvad nu når det er en
>monolog, hvor serveren
>sender beskeder til klienten hvert 15 time, hvordan kan den så vide om en
>connection er i live, andet end
>hvert 15 time?
Der er den kommunikation som man har fastlagt i protokollen, og den kan være tovejs. Men man kan kun vide om begge parter er der ved at
bruge den, så ja, prøver man hvert 15. minut får man på det tidspunkt vished.
>
>/Brian Matzon
>
En TCP forbindelse (ikke at forveksel med HTTP protokolen) er en pålidelig forbindelse, hvor begge parter kan sende (og modtage).
Klient/Server rollerne eksisterer TCP forbindelsesmæssigt kun i forbindelsesfasen, hvor serveren lytter på en bestemt port(her port 5000):
   ServerSocket server = new ServerSocket( 5000, 100 )
   server.accept(); // hænger intil en klient kalder

Og klienten kalder på denne port (her localhost, port 5000)
   Socket client = new Socket(InetAddress.getByName( "127.0.0.1" ), 5000 );
   // Sender hermed også source port, så serveren kan kende forskel på klienter.

Forbindelsen er oprettet intil enten klienten eller serveren kalder close() metoden på Socket objektet. Sålænge forbindelsen er oprettet kan
det registreres hvis modparten forsvinder. (Ved forsøg på at kommunikere over Socket)

Som også Jacob Bunk Nielsen er inde på, er en HTTP session, en forbindelse som disconnectes efter hvert 'response'. Der er ingen klient at
kalde når først forbindelse er lukket, for klienten lytter ikke til nogen port.
Hvis man f.eks ønsker at anvende en browser som frontend til noget serverside administration, og serveren skal kunne connecte, stikker man
browseren en applet med nogen server funktionalitet i.

MVH
Benny Andersen

Jacob Bunk Nielsen (30-12-2001)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 30-12-01 01:03

"Soeren Dalby" <nospam@nospam.com> writes:

> Interessant - jeg mente ellers bestemt at HTTP var session-løs.

HTTP er ganske rigtig stateless.

Men nyere servere og browsere kan finde ud af at kaste flere
forskellige HTTP-requests igennem en enkelt TCP-forbindelse ved at
sende en:

Connection: Keep-Alive

HTTP-header.

> Hvad betyder det at have en HTTP session ??

At man opretter en TCP-forbindelse, sender en HTTP-kommando (GET,
POST, PUT, whatever), får svar og at serveren derefter lukker
forbindelsen.

--
Jacob - www.bunk.cc
It'll be a nice world if they ever get it finished.

Christian Hemmingsen (03-01-2002)
Kommentar
Fra : Christian Hemmingsen


Dato : 03-01-02 21:09

Jacob Bunk Nielsen <spam@bunk.cc> writes:

> > Interessant - jeg mente ellers bestemt at HTTP var session-løs.
>
> HTTP er ganske rigtig stateless.
>
> Men nyere servere og browsere kan finde ud af at kaste flere
> forskellige HTTP-requests igennem en enkelt TCP-forbindelse ved at
> sende en:
>
> Connection: Keep-Alive

Normalt er det nok at bare at lave et gyldigt HTTP/1.1 request.
F.eks.:
GET / HTTP/1.1\r\n
Host:\r\n
\r\n
Så bliver man ved med at sende requests indtil serveren sender en
Connection: close
header eller man selv gør. Derefter kan man ikke regne med at
forbindelsen er åben længere. Serveren kan dog også vælge at time
forbindelse ud hvis man har været inaktiv for længe, typisk ca 20
sekunder. HTTP/1.1 giver enddog mulighed for at pipeline sine request,
sådan at man ikke behøver at vente på svar på hvert eneste request man
sender, før man sender det næste, dette kan øge datagennemstrømningen
dramatisk og belaster webserveren mindre.
Alt om HTTP-protokollen kan iøvrigt læses i RFC2616.

--
Christian Hemmingsen

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste