23
Tags:
visual-basic
Skrevet af
Bruger #2353
@ 19.05.2003
Brug af netværk/Internettet
For at lave multiplayerspil, chatte og andre former for netværks kommunikation, skal du bruge en indbygget kontrol i Windows system. Det du skal bruge er den såkaldte: winsock kontrol.
Du finder den her:
Efterfølgende skal du trykke ”components”.
Nu vil denne skærm dukke op.
Vælg ”Microsoft winsock control”. Tryk ”ok” eller ”anvend”.
Der er nu kommet et nyt objekt i toolboksen - det er winsock kontrollen. Prøv at placere den et tilfældigt sted på formen. Den vil ikke være synlig når programmet køres. Den fungerer ligesom fx en timer.
Klik på den og ændre navnet til ”W”
Gå ind i formens load procedure.
Skriv dette:
Private Sub Form_Load()
W.Protocol = sckUDPProtocol
W.RemotePort = 1000
W.LocalPort = 1000
W.Bind
End Sub
Linje 1. (W.Protocol = sckUDPProtocol)
I denne linje angives protokollen. Du skal ikke uden videre sætte dig ind i dette, bare vend dig til at skrive det.
Linje 2,3. (W.RemotePort = 1000), W.LocalPort = 1000
Her skriver vi til winsock kontrollen, at den port som den skal ”lytte” og sende til skal være 1000. Her kan du skrive et hvilket som helst tal, næsten. Bare mellem 1000 og 10000.
Den lokale port skal så ligeledes være 1000
Linje 4 (W.Bind)
I denne linje fortæller vi winsock at den skal ”lytte” efter indkommende beskeder. Hvis denne linje glemmes, vil winsock kun kunne sende tekster, ikke modtage.
Start
Vi laver det hele i et program. På denne måde kan kun to chatte sammen!
· Opret en textbox, text1
· I denne box skal de indkommende beskeder dukke op i
· Opret endnu en textbox, text2
· I denne kommer Ip adressen til at stå i
· Opret textbox3, text3
· I denne box kan du skrive beskeder til den anden.
Det hele skal se sådan ud.
Det er meget vigtigt at alle navnene er de samme, ellers vil programmet ikke virke.
Variabler
Kopier denne variabel ind i formens generel procedure:
Public SendTil As String----Form Load----
Kopier denne kode ind i form_load proceduren.
Private Sub Form_Load()
W.Protocol = sckUDPProtocol
W.RemotePort = 1000
W.LocalPort = 1000
W.Bind
' Finder modtagerens ip adresse
SendTil = InputBox("Skriv den som du vil sende til's ip adresse:", "Ip.")
If SendTil = "" Then: MsgBox "Programmet kan ikke køre uden en remote ip adresse!" &
vbCrLf & vbCrLf & "Men vent evt. op at den anden skriver til dig, så vil programmet virke!", vbCritical
W.RemoteHost = SendTil
' Ip adressen
Text2.Text = W.LocalIP
' Restart alle kontroller
Text1.Text = ""
Text3.Text = ""
Command1.Caption = "Send"
End Sub
Sær denne kode ind i Winsock DataArrival:
Private Sub W_DataArrival(ByVal bytesTotal As Long)
SendTil = W.RemoteHost
Dim Tekst As String
W.GetData Tekst
Text1.Text = Tekst
End Sub
og Command1_click
Private Sub Command1_Click()
On Error GoTo fejl2
' Hvis der ikke er skrevet noget
If Text3.Text = "" Then: GoTo fejl
' Hvis alt er normalt
W.SendData Text3.Text
' ikke skrevet noget
Exit Sub:
fejl:
MsgBox "Der er fejl! Du skal skrive noget.", vbCritical
' ingen at sende til
Exit Sub
fejl2:
MsgBox "Der kan ikke sendes data! Der er muligvis ikke angivet en at sende til!", vbCritical
SendTil = InputBox("Skriv evt. den andens ip:")
End Sub
[k]Hvordan køres programmet?[/k]
Du kører programmet ved fx at have to computere koblet sammen. Det er faktisk ofte at selvom man ikke kan få netværket til at virke i Windows, så virker det i denne slags programmer.
Du kan også have to computere på Internettet, det er samme princip.
Programmerne køres sådan.
Du skal på forhånd kende din modtagers ipadresse - skriv derefter ip-adressen i startfeltet. Prøv programmet på dine egen computer(e). Det vil helt sikkert give dig inspiration til chatprogrammer, multiplayerprogrammer o.l.
Held og lykke!
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 (44)
Jeg har ikke læst artiklen endnu, men den kommer som kaldet!!!
Jeg er lige sat til at lave en chat i går og har knoklet røven ud af bukserne på at lave den... Den virker næsten, men der mangler stadig lidt. Måske kan din artikel forklare mig hvad det er jeg mangler... Vi for se... læser nu!
Dohh...
Hvor er jeg dog dum! Jeg havde glemt *.Bind!!!
Tak for det... Du får et flot 5 tal!
PS. Min chat er bedre end din
det ville være rart hvis der var mulighed for at downloade det færdige program
det er en fed artikel og jeg har fået meget brug for den for jeg er gået igangmed datakomunikation hilsen rune
Virker meget godt, men lige et tip:
Brug goto så lidt som muligt da goto gør koden forvirende at læse
Tak skal i have. Jeg haren meget mere avanceret chat klar på min computer. Den muliggører admin- og brugerfunktioner. Jeg overvejer at uploade den hertil. Der er også mulighed for skit mellem forkellige chatrum, og oprettelse af egne chatrum.
Jeg ser frem til at uploade den.
/Rasmus
Tja, den er ikke så advanceret.
Men det er da næsten en fordel her på udvikleren, så kan folk selv bestemme hvad de vil udvide den med...
Præcis!.
Den chat, som jeg uploader senere, er meget avanceret. - Så er der lidt for en hver. hehe
Davs alle sammen. Nu er chatten klar til at blive hentet. Der er vedlagt et serverprogram og et klientprogram. God fornøjelse!
Hent det her:
http://www.dll.1go.dk/chat.zipMvh. Rasmus H
Cool´, sådan en har jeg rodet med mange gange før, uden held :o) Tak skal du have
så lidt...
Jamen, det er da en dejlig artikel, men hva gør man når winsock ikke er installeret??
fejl:
component 'mswinsck.ocx' or one of it's dependencies not correctly registered: a file is missing or invalid
Hej..
Det problem kender jeg godt. Jeg plejer at vedlægge winsockkontrollen, fra min egen computer, ved det færdige progam. Når programmet køres kopierer jeg kontrollen ind i Windows system mappen:
Men det er selvfølgelig et problem, hvis du slet ikke har kontrollen. Jeg kan sende den til digm og så kan du bare kopiere den ind i systemmappen.
Hvis du ønsker den så kontakt mig:
rasmuss@jubiimail.dk
mvh. Rasmus - member of VISONIC Crowd
Hvad er formens generel procedure
da jeg er noob
Hvad er formens generel procedure
da jeg er noob
Hvad er formens generel procedure
da jeg er noob
Hvad er formens generel procedure
da jeg er noob
Hey din side virker har du skiftet adresse
undskyld men jeg glæmte at logge ud så der er en der har skrevet det her lort fra min bruger
Når jeg prøver at lave winsock svarer den at den ikke har den korrekte licens.
Hejsa.
Jeg har været ved at lave denne chat som du så flot har beskrevet i din artikel, men jeg bliver ved med at få den samme fejl.. nu skal det siges at det er første gang jeg prøver vb så jeg har næsten ingen forstand på det, men fejlen ser sådan ud
http://www.frip.dk/aloneiz/
Nu ved jeg godt at overskriften lyder "simpel chat mellem to computere" men ville man godt kunne lave det sådan at der f.eks er en der hoster en chat, og så kan fire fem andre joine den chat via den ip?
du er en skat, det skal jeg prøve!!!
>>paw hansen
Den linje der er markeret med rød skal tilhøre den ovenstående linje så virker det. jeg tror det er dig der er kommet til at trykke forkert?
>>Anders Friis
Det kan godt være, at jeg vil uploade en mere avanceret guide til netværkskommunikation, nu da jeg har modtaget så meget positiv respons.
Det er nemlig muligt, men det kræver tid at udvikle. Netværkskommunikation er noget af det mest tidskrævende efter min mening. To computere er også en nødvendighed.
Udmærket artikel - måske du burde gå ind på brugen af RFCs, for eksempel til udvikling af et FTP eller IRC program? Det er meget rart at lære hvordan man via winsock kan lave ting baseret på foruddefinerede protocoller...
Det kunne være...
Jeg er på nuværende tidspunkt igang med en nøjagtig kopi af Sid Meiers CivNet. Version 1. Jeg forventer at uploade den hertil. Den kan måske give stor inspiration til winsockprogrammering for "lettere øvede".
Tak for de positive ord N30 og jer andre!
Jeg kan ikke hente
chat.zip fra din hjemmeside!
Mvh.
Thomas Christensen
er det muligt at i kunne lave artikler om at lave nogle spil ?? eller lave ex fortrukne med en homemade webbrowser?
jeg er nemlig lige startet på VB og vil gerne have hjælp.
Kan man ikke lave følgende funktion?
Når modparten går ud af programmet (logger af chatten), kommer der en MsgBox op, som informerer om dette... Efter MsgBox'en, skal man så kunne vælge IP igen...
Kan det lade sig gøre?
Ellers mange tak for en god artikel
Ellers iorden Guide... Der mangler bare "_"
Men det skal stå som under her
If SendTil = "" Then: MsgBox "Programmet kan ikke køre uden en remote ip adresse!" & _
- Netop Jesper.
- Andi, Ja det er muligt at lave en webbrowser. Jeg henviser til www.pscode.com, søg efter browser i toppen.
- Hvis i er interesseret i en mere avanceret chat, så burde i læse min nyeste artikel: Avanceret chat mellem flere computere.
Mvh. Rasmus
Jeg er helt ny inden for VB. Kunne rigtig godt tænke mig at lave et chat program så jeg prøvede den her... og det hele ser ud til at virke bortset fra den der: Public SendTil as String.
Hvor er det den skal sættes ind?
Lige en ting mere... har sendt et program jeg lavede hvor jeg brugte Winsock Control. Han kan ikke åbne det... er der nogen der ved hvorfor?
Sendt det til en ven altså... undskyld
Jeg bruger visual studio, og der harf jeg svært ved at finde WinSock controlen.
Sigurd, SenduM: Ja, i mangler begge Winsock... Det forholder sig sådan, at kompiler man et program og sender det til fx en kammerat, så bliver han nødt til også at have Winsock kontrollen OG de andre systemfiler, der får programmet til at virke. Visual Basic baserer sig på Windows og dermed også på de filer, der er indbygget i Windows. Og da Visual Basic hele tiden bliver opdateret eller udvidet, ligger disse filer ikke som standard i Windows systemmappen.
Men der er hjælp at finde. Når man er færdig med en applikation, skal man simpelthen bare konvertere den til en installationsfil. Således, at "kammeraten" eller hvem det nu måtte være, skal installere programmet gennem et installationsprogram først. Og det er meget, meget enkelt. I Visual Basic mappen ligger der et program, der hedder noget i retningen af "Wizzard", og det kan konvertere din exe fil til en installationsfil. Denne sender man til "kammeraten". Men har man ikke Winsock på sin egen computer, skal man selvfølgelig først have fat i det.
Jeg har uploadet Winsock-kontrollen her:
www.mcr-music.dk/rasmus/MSWINSCK.OCX
Den skal downloades og placeres i Windows stystemmappen. (/windows/system32/). Derefter kan den findes som artilken beskriver.
Held og lykke!
fed artikel
rigtig lækker artikel
MEGET STORT 5 TAL
rigtig lækker artikel
MEGET STORT 5 TAL
Lille men lide til er en god start.
hilsen Rene
Du skal være
logget ind for at skrive en kommentar.