Avatar billede fun22 Nybegynder
25. januar 2006 - 11:35 Der er 11 kommentarer og
1 løsning

Klient til Server til Klient?

Hej

Jeg er ved at lave et chat program.. Indtil videre har jeg fået lavt sådan at jeg kan sende en besked fra klienten og til serveren.

Men hvordan laver jeg sådan at serveren smider det tilbage til klientens main memo?

Altså sådan at man kan se hvad alle skriver?
Avatar billede fun22 Nybegynder
25. januar 2006 - 11:37 #1
Jeg bruger TcpClient og TcpServer..
Avatar billede kroning Nybegynder
25. januar 2006 - 15:12 #2
Jeg har svaret på næsten det samme spørgsmål før således:

Jeg har banket et lille chat sammen som du måske kan få nogle ideer fra. Jeg har brugt en TStringList til at indeholde brugerne i formatet IP:Port=BrugerNavn. Når en bruger logger på/af sendes hele bruger listen til de enkelte klienter.
Det er noget jeg jeg ikke har brugt lang tid på så der er sikkert fejl og der kan sikkert rydes op i det men som sagt kan du måske få nogle ideer.
Programmet er lavet i Delphi 7 og jeg har brugt TServerSocket og TClientSocket som føler med men manuelt skal installeres i Delphi 7.
For at teste på en enkelt maskine gør følgende:
Start programmet 2 eller flere gange
Indtast din lokale IP i dem alle
Indtast forskellige navne i dem alle
Tryk på knappen "Er server" på en enkelt af dem
Tryk på knappen "Er klient (log på)" på alle de andre
Og så er det bare at indtaste tekst og trykke enter i dem alle.

Kan hentes her: http://www.kroning.dk/ChatTest.zip
Avatar billede fun22 Nybegynder
26. januar 2006 - 09:19 #3
Jeg bruger Delphi 6 og får lige en lille fejl.. Hvor får du PosEx fra? Der kommer en fejl ved den så er det et nyt komponent jeg skal have?
Avatar billede kroning Nybegynder
26. januar 2006 - 09:26 #4
Næ det er bare en function i en unit der hedder StrUtils men den er måske først kommet i Delphi 7, hvis du ikke kan finde den kan jeg hurtig lave en. Jeg kunne også poste borlands PosEx function her men det er nok ikke lovligt.
Men beskrivelsen af den kan du da lige få i første omgang:

Delphi syntax:

function PosEx(const SubStr, S: string; Offset: Cardinal = 1): Integer;

Description

PosEx returns the index of SubStr in S, beginning the search at Offset. If Offset is 1 (default), PosEx is equivalent to Pos.

PosEx returns 0 if SubStr is not found, if Offset is greater than the length of S, or if Offset is less than 1.
Avatar billede fun22 Nybegynder
26. januar 2006 - 09:35 #5
okay.. Fejlen forsvant da jeg kopierede det ind i projektet.. men den er heller ikke glad for: "ValueFromIndex" i "BrugerList.ValueFromIndex[i]"
Avatar billede kroning Nybegynder
26. januar 2006 - 09:37 #6
Det lyder lidt mystisk med ValueFromIndex for den var også med i Delphi 4 så vidt jeg husker.
Avatar billede fun22 Nybegynder
26. januar 2006 - 10:10 #7
okay.. den kommer heller ikke frem hvis jeg skriver BrugerList. Der hvor alle funktionerne plejer at komme.. Der er kun en der hedder Value..
Avatar billede kroning Nybegynder
26. januar 2006 - 10:34 #8
Har lige testet med Delphi 4 og der er ValueFromIndex ikke med så den er åbenbart først kommet med i Delphi 7.
Avatar billede fun22 Nybegynder
26. januar 2006 - 10:42 #9
Okay.. Hvad er det at funktionen gør? Er der ikke en anden måde?
Avatar billede kroning Nybegynder
26. januar 2006 - 11:06 #10
jow, hvis du smider denne funktion ind: (utestet)

function ValueFromIndex(SL : TStringList;Index: Integer): string;
begin
    if Index >= 0 then
      Result := Copy(SL[Index], Length(SL.Names[Index]) + 2, MaxInt)
  else
    Result := '';
end;

og så de steder hvor der står:
BrugerList.ValueFromIndex[i]

skriver du i stedet:
ValueFromIndex(BrugerList,i)

så burde det virke.
Avatar billede fun22 Nybegynder
26. januar 2006 - 12:55 #11
Tak for hjælpen.. Jeg har taget nogen af dine ideer og så selv lavet det fra bunden.. Men takker for hjælpen.. Smider du lige et svar?
Avatar billede kroning Nybegynder
26. januar 2006 - 15:24 #12
et svar
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