:fightred:
INDY?, hvad er det?
Indy er en samling af internet componenter til delphi. De er gratis og følger forøvrigt med delphi 6 såvidt jeg husker.
Mht til chat program, så har du ikke fået forklaret 100% præcist hvad programmet skal og især hvor store antal brugere der skal benytte det.
Under alle omstændigheder vil jeg sige at du sagtens kan benytte de to socket componenter ClientSocket og ServerSocket der følger med Delphi. Jeg kan ikke lige huske fra hvad version de begyndte at følge med.
Hvis vi tager udgangspunkt i en simpel chat client hvor der er et rimelig begrænset antal brugere på som ikke findes i en database, men istedet logger på og vælger login fra gang til gang (Som f.eks irc), så ville jeg gøre følgende.
Når clienten har forbundet til serveren sender den en pakke indeholdende bruger informationer. Dette kan være f.eks brugernavn, rigtigt navn osv. Disse informationer sendes i et eller andet custom format. Du kunne f.eks vælge at sende dem i xml format for at gøre dit arbejde lettere.
Hvis det ikke skal være muligt at to personer har samme brugernavn så vil det første der skal ske være at serveren checker om der er andre med samme bruger navn.. hvis det skulle være tilfældet sendes en fejl meddelelse tilbage til clienten og forbindelsen lukkes.
Hvis brugernavnet ikke findes eller det er tilladt med flere personer med samme brugernavn opretter serveren et bruger objekt og fylder de tilsendte informationer ind samt information om socket'en så der senere kan udveksles yderligere information.
Dette objekt sættes ind i en liste over brugere og ved hvis forbindelsen til en bruger mistes fjernes det tilhørende objekt naturligvis og der sendes besked til alle andre brugere om at den pågældende bruger ikke længere er på.
Det næste der nødvendigvis må ske er at serveren først sender information ud til den nye bruger (client) om hvem der er online (Ved at gå igennem listen af brugere). Ved samme lejlighed kan der passende sendes information ud til alle andre brugere i listen om at der er kommet en ny bruger online.
Når nu en besked sendes fra en client til serveren sendes den igen som en pakke i f.eks xml format og indeholder en modtager (Som id, brugernavn, ip eller en anden identificerende information) samt selve beskeden.
Idet serveren modtager beskeden sendes denne med det samme videre til den rette modtager.
Hvis der nu havde været tale om et netværk med mange brugere i et netværk som f.eks icq hvor man har en kontakt liste over folk man kender og hvor hver bruger har sin egen id og password, så ville det nok være mere mere fornuftigt at lade clienten med et fast interval forespørge serveren om hver af personerne i kontakt listen var online. Derved skal der ikke sendes informationer til clienten om alle personer der er online.
Selve socket komponenterne er rimelig lette at benytte og der skulle være hjælp til dem i den hjælpefil der følger med Delphi.
Mvh
Kristian