Avanceret chat mellem flere computere

Tags:    visual-basic
Skrevet af Bruger #2353 @ 12.04.2004

Indledning



Denne artikel er en viderebygning på den forrige artikel ”Simpel chat mellem to computere”, men udgangspunktet er denne gang at skrive en mere avanceret chat, der ikke blot fungerer mellem to computere, men fungerer mellem X-antal computere.
Der er et antal nye funktioner som alle bidrager til en meget brugervenlig chat med en simpelt brugergrænseflade. Fx behøves det ikke længere vides hvad de andres ip-adresser er – programmet søger dem selv og opretter forbindelse.
I realiteten kunne du, når du tester dit program komme i kontakt med en anden bruger af programmet, hvis du har forbindelse med Internettet, sjovt ikke?

Vi benytter kun to Winsock-kontroller der begge er af samme format som benyttet i sidste artikel, derfor skal du ikke lære ny kode; men vær forberedt på en sofistikeret kodeopbygning. Der bliver ikke taget brug i API eller lignende så alt forekommer logiske og med pæne danske navne: Fx hedder en Winsock-kontrol: ”skab_forbindelse”.


Programmet



Vi kommer til at bruge to forme og tre moduler i alt. Den ene form skal bruges som brugergrænseflade og den anden kører hele tiden i det skjulte for at skabe forbindelse til andre brugere og for at modtage tekststumper.

Start med at oprette disse, med navnene:

Fold kodeboks ind/udKode 


Eller saml alle modulerne i ét, hvis du ikke finder overskueligheden relevant, ovenstående anbefales!


Modulet ”Brugere”

Her skriver du understående tekst, der her er kopieret direkte fra projektet – derfor er kommentarerne stadig i koden.

Fold kodeboks ind/udKode 


Næste modul ”Procedurer” indeholder meget kode, som du kan betragte når du har kopieret den ind i Visual Basic projektet. Der er kommentarere i koden.

Fold kodeboks ind/udKode 


I sidste modul, ”Variabler”, er der blot én linje, men af hensyn til eventuelle opdateringer eller supplementer anbefales det at du beholder koden i ét modul.

Fold kodeboks ind/udKode 



Nu er det grundlæggende sat på plads, og vi kan gå i gang med at kode noget i Winsock-kontrollerne og knapperne. Jeg vil dog råde dig til at læse kommentarerne allerede nu og forstå koden, men du kan også vente til de bliver aktiveret.


Startformen



Formen ”Start_Form” skal vi nu i gang med at designe. Sæt det eventuelt op som du kan se på billedet her under, og navngiv kontrollerne som vist:




Dobbeltklik på formen og vælg ”(generel)” hvor der står ”(form)”. Nu kan du copy-paste denne kode:

Fold kodeboks ind/udKode 



Det er den grundlæggende kode, men det første der skal ske i programmet er, at Winsock-kontrollerne skal aktiveres. Vi har endnu ikke oprettet nogle Winsock-kontroller, men det skal vi til nu.
Dobbeltklik på formen ”Forbindelser” og opret følende kontroller, så det ser ud som understående: (I forrige artikel beskrives det hvordan Winsock-kontrollen findes)



Sæt intervallet for Timer1 til ”500” og intervallet i timer2 til ”1000”.

Nu kan du på samme måde som før kopiere den næste kode ind i formen:

Fold kodeboks ind/udKode 



Men vi mangler det vigtigste! Vi skal skabe forbindelse til Winsock-kontrollerne og det skal gøres i starten – helt i starten. Derfor skal du nu åbne ”Start_form” og sætte følende kode ind i Form_load:

Fold kodeboks ind/udKode 



Sammenfatning



Det var sidste linje kode i dette program, og det er nu klart til at blive testet. Det virker mellem 1 og 400 computere, og du kan forøge dette antal ved at ændre på antallet i modulet: ”Brugere”. Faktisk kan du næsten ændre det ud i det uendelige.
Hvis du har en Internetforbindelse kan du skrive med andre ude i verden. Programmet virker også over LAN-forbindelser.

Alt i alt håber jeg, at du kan bruge koden og programmet til at videreudvikle egne idéer. Det vil fx ikke være noget problem at bruge grundkonceptet til at lave spil eller mere avancerede chatte.

Det tog mig ca. 1½ time at skrive programmet, men med det taget i forbehold, at jeg genbrugte gammel kode. Du kan let genbruge min kode i dine egne programmer.

Hvis du ønsker down- og uploadfunktioner kan du hente min ”RecieveFile” og ”SendFile” ActiveX-kontroller kan du hente dem her, sammen med dette program:

http://www.udvikleren.dk/articlefiles/2353/chatprogram.zip
http://www.udvikleren.dk/articlefiles/2353/send_og_modtag_filer.zip

God fornøjelse.

Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (26)

User
Bruger #5582 @ 12.04.04 18:41
en god artikel.. med et emne der også har underet mig !
User
Bruger #5655 @ 21.04.04 17:58
ehm jeg ved ik lige hvad jeg gør forkert... jeg er max noob og får fejl.... 424 object requiret.

Load Forbindelser
User
Bruger #2353 @ 21.04.04 21:32
Det er uden tvivl fordi, du ikke har givet en af kontrollerne på formen det rette navn. Prøv at revidere artiklen mere detaljeret.
Mvh. Rasmus
User
Bruger #4023 @ 17.05.04 13:07
Hej Rasmus.

Jeg har nu læst din artikel og gennemprøvet programmet. Ændret lidt osv.

Plus til artiklen :
Den er rimelig godt beskrevet.
Man får en del at vide.
Og det bedste man får jo lyst til at lave mere af denne her slags, meget mere :)

Minus :
Der er lidt småfejl i koden. Du mangler feks. at skrive noget om label2. Den skal man jo have med, nu du bruger den i din kode, til at vise brugerens navn.
Man kunne godt uddybe emnerne noget mere, så man kunne bruge tingene til endnu mere.

Men alt i alt, en god artikel, som ikke mindst har sat en del ting igang, der skal prøves af.
Fortsæt det gode arbejde.
User
Bruger #4862 @ 18.05.04 19:58
bliver ved med at få en fejl med noget: List Index
User
Bruger #2353 @ 16.06.04 19:21
St!cks>> Tak for kommentaren.. ;)

Andi Rosenhave>> Har du prøvet at downloade programmet? Det kunne være en lille fejl i copy-past proceduren.
User
Bruger #4684 @ 16.07.04 08:05
Super Artikel!
For ca. 3 timer siden, var jeg 100% n00b i VB, så har jeg læst lidt, og så kunne jeg lave begge chat programmerne!
Håber da at du bliver ved med at lave sådanne ting... :D
Det næste trin, ville nok være at du lavede, 1 application til chat server med DB over brugere, og så en klient program til at oprette brugere og sådan noget med... ( Bare en drøm jeg har :-D )
User
Bruger #6130 @ 12.09.04 11:42
Hej jeg kan ikke få send og modtag til at virke! Den siger error duing load og at der mangler en eller anden fil. Så jeg kan ikke åbene den!! øv
User
Bruger #6489 @ 01.02.05 09:51
Fint program..... har et problem?
Run-time error '40006'
Wrong protocol or connection state for the requested trensaction or request

?? mail: strangecap@hotmail.com
User
Bruger #7399 @ 20.03.05 10:47
jeg får stadig Fejl ved Load forbindelser. Også ved den jeg har downloadet... :S
User
Bruger #5519 @ 28.03.05 22:22
Mega god artikel ...
Bruger den til at lave net spil med over den , har bare et par problemer med nogle ad koderne men tror det kommer snart... ;)
User
Bruger #7549 @ 24.04.05 16:53
jeg har problem når den ska loade sig den : Run time Error 10048 Adress in use
User
Bruger #4141 @ 16.05.05 18:52
Sub or function not defined:
"finddelaftekst"
User
Bruger #1927 @ 13.02.06 21:04
Hej.

Jeg får run-time error 126. (Ingen beskrivelse).
Ved debug siger den at fejlen ligger ved .Bind

Fold kodeboks ind/udKode 
User
Bruger #7882 @ 17.03.06 16:26
hej jeg er meganoob til vb men jeg synes stadig jeg får for mange fejl:91 og jeg har fulgt det hele til punkt og prikke
jeg bruger Microsoft Visual Basic 2005 express edition...
og så er der det jeg kan ikke finde de der winsock kontrol
jeg har set den anden artikel med simpel chat
kan du hjælpe mig?
User
Bruger #10078 @ 07.06.06 07:40
Jeg får en Run-time error 424
Object requred

i Label2.Caption = "Velkommmen " & Forbindelser.Skab_Forbindelse.LocalHostName

Hvordan kan det være???
User
Bruger #10112 @ 15.06.06 13:40
hvilken version af visual basis er bedst?
User
Bruger #1927 @ 28.06.06 00:41
Visual Basic*

Den nyeste ;)
User
Bruger #10211 @ 06.07.06 18:25
hey
hvordan finder man det der Module
og hvad hedder det inde i vb 6,0
User
Bruger #10782 @ 07.11.06 11:39
Jeg får flere fejl i den :S jeg prøver at gå den igennem igen
User
Bruger #10889 @ 19.11.06 05:41
Gutter det er fordi, at denne artikel er relativ gammel og ikke er skrevet i NET. Visual Basic 2005 samt express edition er bygget på .NET - som i øvrigt bliver mere og mere udbredt - så for at lave denne her chat, skal i (hvis man stadig kan) lede efter en ældre version af Visual Basic, som ikke bruger .NET.....

User
Bruger #12021 @ 03.11.07 13:06
Det virker ikke der er 7 fejl i module1 når jeg indtaster koden til module1, nogen der kan hjælpe?
User
Bruger #10645 @ 04.11.07 19:42
Hejsa. jeg får ingen problemer ved at køre exe filen på en computer der har VB installeret, men hvis man kører den andre steder så siger den at den mangler filen MSWINSCK.OCX

Hvad gør jeg ?
User
Bruger #10645 @ 04.11.07 19:48
har fundet fejlen . . skulle bare ligge den manglende fil i samme mappe som exe filen, på de computere der ikke undersøtter det. . . smart program.
User
Bruger #13361 @ 25.02.08 08:46
Hvordan finder man winsock i Visual Studio 2008 ? :roll:
User
Bruger #14578 @ 11.01.09 13:12
heey Rasmus.

Jeg kan simplethen ikke finde den grundliggende ting winsock.

ved du hvor den kan downloards henne
eller vil du sende den til mig.

har en acer aspire one.( notebook)
med windows xp home editon

hvis det kan hjælpe

Håber sgu du vil hjælpe mig da det lige sagen det med egen chat.

MVH

kenneth k
Du skal være logget ind for at skrive en kommentar.
t