TCP/IP Socket Chat

Tags:    delphi

Jeg ved der er mange der har spurgt om dette før men jeg forsøger mig nu engang også:

Jeg har i lang tid forsøgt at lave en chat i delphi. Den skal køre på sockets, med IP som det fængende, altså det der afgør hvem du sender til.
Derfor har jeg fundet denne artikel: http://delphi.about.com/library/weekly/aa112602a.htm
Det så ud til at virke i starten og jeg var lykkelig lige indtil man kører en client og en server på hver sin computer. Og så har jeg omskrevet koden sådan at man indtaster sin ip og trykker på en knap som så connecter til IP'en. Men når jeg gør det, så kommer den ene kun igennem (den på den anden computer)Han kan fint skrive og connecte mens clienten på min egen først tager lang tid om at loade og så hvis man skriver noget og sender med et tryk på en knap; skriver den følgende:
Asynchronus Socket Error!! Error no. 10060 has accuired. Jeg er ikke helt sikker på nummeret men resten passer.

PLEASE HJÆLP!! Jeg vil gerne have hjælp til at løse det her eller en helt ny kode.

// Kasper
»http://kaspertech.dk


PS: Min egen kode er så godt som den samme der er at finde på http://delphi.about.com/library/weekly/aa112602a.htm bare med de få ovenstående ændringer.



8 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Jeg ved der er mange der har spurgt om dette før men jeg forsøger mig nu engang også:

Jeg har i lang tid forsøgt at lave en chat i delphi. Den skal køre på sockets, med IP som det fængende, altså det der afgør hvem du sender til.
Derfor har jeg fundet denne artikel: http://delphi.about.com/library/weekly/aa112602a.htm
Det så ud til at virke i starten og jeg var lykkelig lige indtil man kører en client og en server på hver sin computer. Og så har jeg omskrevet koden sådan at man indtaster sin ip og trykker på en knap som så connecter til IP'en. Men når jeg gør det, så kommer den ene kun igennem (den på den anden computer)Han kan fint skrive og connecte mens clienten på min egen først tager lang tid om at loade og så hvis man skriver noget og sender med et tryk på en knap; skriver den følgende:
Asynchronus Socket Error!! Error no. 10060 has accuired. Jeg er ikke helt sikker på nummeret men resten passer.

PLEASE HJÆLP!! Jeg vil gerne have hjælp til at løse det her eller en helt ny kode.

// Kasper
»http://kaspertech.dk


PS: Min egen kode er så godt som den samme der er at finde på http://delphi.about.com/library/weekly/aa112602a.htm bare med de få ovenstående ændringer.

Hej Kasper,

Fejl 10060 får du når TClientSocket ikke kan få fat i den angivne IP + Port.
Den måde som eksemplet demonstrere brugen af TClientSocket/TServerSocket tager ikke højde for om serveren er startet op eller ej så derfor vil du få en exception hvis serveren ikke er startet.

Prøv at starte din klient/server i følgende rækkefølge:
1. Start Server og sæt den i "listen" mode (Active := True).
2 Start Klienten og angiv serverens IP.

Nu skulle du gerne kunne sende fra klient til server og omvendt.

HUSK!
Du skal ikke angive IP på serveren, da den får/opretter en forbindelse til klienten automatisk når klienten har connect'et.

Jeg har lavet 2 programmer Klient og Server som du kan prøve at bruge/bygge videre på:
Prøv evt. at bruge flere klienter samtidig...
KlientMain.dfm
Fold kodeboks ind/udKode 


KlientMain.pas
Fold kodeboks ind/udKode 


ServerMain.dfm
Fold kodeboks ind/udKode 


ServerMain.pas
Fold kodeboks ind/udKode 



Prøv at kig på koden og har du spørgsmål, så fyr løs.
God fornøjelse,

/Michael.



Hey!
Tak for svaret men jeg kan nu ikke få dit eksempel til at virke!

Selv med ikke denne kode virker det :S :
Fold kodeboks ind/udKode 

og klienten
Fold kodeboks ind/udKode 


Jeg forstår ikke hvorfor det lort ikke vil få forbindelse med hinanden...

PS: kommer der et korrekt svar eller en helt ny source vil jeg gerne give de 200 her + 150 UPs (vedkommende får dem bare i en anden tråd)

// Kasper
»http://kaspertech.dk


[Redigeret d. 06/11-03 19:27:24 af KasperTech]



Hey!
Tak for svaret men jeg kan nu ikke få dit eksempel til at virke!

Selv med ikke denne kode virker det :S :
Fold kodeboks ind/udKode 

og klienten
Fold kodeboks ind/udKode 


Jeg forstår ikke hvorfor det lort ikke vil få forbindelse med hinanden...

PS: kommer der et korrekt svar eller en helt ny source vil jeg gerne give de 200 her + 150 UPs (vedkommende får dem bare i en anden tråd)

// Kasper
»http://kaspertech.dk


[Redigeret d. 06/11-03 19:27:24 af KasperTech]


Hej Kasper,

Har dine 2 maskiner du tester på, en fast IP (hvis du bruger Stofa skal dette specifikt oprettes da dine maskiner ellers sidder bag en NAT)???

Det er selvfølgelig kun Serveren som skal ha' fast IP og hvis der er en firewall på denne maskine så skal der selvfølgelig også være åbnet for port 23 (både indgående og udgående).

Koden jeg har givet dig fungere udmærket (har test med klient programmet på 4 maskiner og 1 server).

/Michael.




Hej Kasper,

Har dine 2 maskiner du tester på, en fast IP (hvis du bruger Stofa skal dette specifikt oprettes da dine maskiner ellers sidder bag en NAT)???

Det er selvfølgelig kun Serveren som skal ha' fast IP og hvis der er en firewall på denne maskine så skal der selvfølgelig også være åbnet for port 23 (både indgående og udgående).

Koden jeg har givet dig fungere udmærket (har test med klient programmet på 4 maskiner og 1 server).

/Michael.


Hej :)

Nej jeg ved ikke om stofa er sat op til fast IP eller min firewall blokerer port 23 ... jeg har ingen firewall installeret...så det må være stofa connection....men jeg tror kun min ip skifter hvert kvartal :S ??

Har mIRC ??

// Kasper
»http://kaspertech.dk


[Redigeret d. 06/11-03 19:54:58 af KasperTech]




Hej Kasper,

Har dine 2 maskiner du tester på, en fast IP (hvis du bruger Stofa skal dette specifikt oprettes da dine maskiner ellers sidder bag en NAT)???

Det er selvfølgelig kun Serveren som skal ha' fast IP og hvis der er en firewall på denne maskine så skal der selvfølgelig også være åbnet for port 23 (både indgående og udgående).

Koden jeg har givet dig fungere udmærket (har test med klient programmet på 4 maskiner og 1 server).

/Michael.

Hej :)

Nej jeg ved ikke om stofa er sat op til fast IP eller min firewall blokerer port 23 ... jeg har ingen firewall installeret...så det må være stofa connection....men jeg tror kun min ip skifter hvert kvartal :S ??

// Kasper
»http://kaspertech.dk


[Redigeret d. 06/11-03 19:52:52 af KasperTech]

Hej Kasper,

Det er sådan set lige meget....
Problemet er at den IP som din maskine viser ud af til ikke er den som du har ind ad (altså på stofa siden). Stofa bruger NAT på deres side hvilket betyder at din ip bliver lave om og sendt det rigtige sted hen. Alt dette betyder at ingen maskiner kan connecte til dig med mindre du har fast ip.

/Michael.



Ej hvor ærgerligt :´( det vil sige at jeg så ikke kan lave en chat ??

Det var da irriterende...men hvad jeg så ikke forstår er at jeg godt kan køre Counter Strike ?
Nå men tusind tak for hjælpen og jeg vil bare foreslå dig at skrive en artikel om emnet hvori du forklarer det hele fra bunden. Det kan jo være jeg får nyt internet senere og så vil jeg hjertens gerne kunne indstille det til fast IP.

PS: Altså jeg vil gerne vide om det er det der er problemet.???????....for så må jeg vel opgive mit meget langvarige projekt: en chat :´(
Da det koster 15 kr. om måneden med stofa og 99 i oprettelse at få fast ip og det gider jeg ikke ??????

// Kasper
»http://kaspertech.dk



[Redigeret d. 06/11-03 22:44:37 af KasperTech]



Ej hvor ærgerligt :´( det vil sige at jeg så ikke kan lave en chat ??

Det var da irriterende...men hvad jeg så ikke forstår er at jeg godt kan køre Counter Strike ?
Nå men tusind tak for hjælpen og jeg vil bare foreslå dig at skrive en artikel om emnet hvori du forklarer det hele fra bunden. Det kan jo være jeg får nyt internet senere og så vil jeg hjertens gerne kunne indstille det til fast IP.

PS: Altså jeg vil gerne vide om det er det der er problemet.???????....for så må jeg vel opgive mit meget langvarige projekt: en chat :´(
Da det koster 15 kr. om måneden med stofa og 99 i oprettelse at få fast ip og det gider jeg ikke ??????

// Kasper
»http://kaspertech.dk



[Redigeret d. 06/11-03 22:44:37 af KasperTech]

Hej Kasper,

Det er ikke noget problem at kører CS som klient men til gengæld er det ikke muligt at kører CS som server.

Og det med fast ip ER problemet.....

Men lad da være med at opgive chatten men lav den færdig..Du kan jo stadigvæk kører server og klient på samme maskine..

/Michael.



Tusind tak for de mange gode råd og den mangfoldige hjælp. Jeg håber på jeg senere kan få hjælp til TCP programmering (med UPs som betaling selvfølgelig ;)) Men jeg vil gå videre med min chat og så bare bruge min vens computer til at teste om den virker :D

Endnu engang tak og så glæder jeg mig bare til den dag hvor jeg får en fast IP :)

kaspertech
http://kaspertech.dk




t