Avatar billede jsc Nybegynder
03. juni 2001 - 22:28 Der er 16 kommentarer og
1 løsning

beskeder via internet

Hej Eksperter.

Jeg vil til at lave et program, hvor jag kan chatte med min kammerat i den anden \"ende\". Min ven og jeg har begge en fast ip, så det skulle vel ikke være et stort problem at lave denne lille funktion til at sende meddelserne med... eller hvad?

/jsc
Avatar billede mikker Nybegynder
04. juni 2001 - 09:35 #1
Næh ikke hvis du kender ip\'en

Prøv at kigge på winsock...

- Mikker
Avatar billede jsc Nybegynder
04. juni 2001 - 14:26 #2
den vil jeg gerne lige have uddybet...

winsock? .com? .net? .-?

hvis det er winsock.com du snakker om så kan jeg ikke finde noget...

/jsc
Avatar billede jsc Nybegynder
04. juni 2001 - 14:28 #3
jeg vil jo gerne have lidt koder til denne funktion...

/jsc
Avatar billede mikker Nybegynder
05. juni 2001 - 10:21 #4
Jeg beklager at jeg tilsyneladende har et problem med at udtrykke mig klart i øjeblikket.

Winsock er en fil der ligger på din harddisk som en del af windows (Vistnok en dll) ??!!??

Hvis du søger efter winsock i din vb-hjælp skulle du få mere end rigeligt med oplysninger.
Kan ikke lige hjælpe dig mere ligenu, da jeg ikke har adgang til vb, måske senere hvis du ikke finder på noget.

- Mikker
Avatar billede jsc Nybegynder
05. juni 2001 - 13:13 #5
hmm winsock... jo en dll-fil - ok

du forstår jeg ved jo ikke altid hvad folk de snakker om, sådan som f.eks. dette her.

Ok jeg prøver og kigge i vb denne gang...

/jsc
Avatar billede jsc Nybegynder
07. juni 2001 - 16:23 #6
--> mikker
jeg har fundet winsock kontrollen...
Så mangler jeg bare koden! Kan du fikse den?

/jsc
Avatar billede schubert1 Nybegynder
07. juni 2001 - 18:15 #7
Du behøver slet ikke en WinSock control se bare her:

Private Declare Function NetMessageBufferSend Lib \"NETAPI32.DLL\" _
(yServer As Any, yToName As Byte, yFromName As Any, yMsg As Byte, _
ByVal lSize As Long) As Long
Private Const NERR_Success As Long = 0&

Public Function BroadcastMessage(UserOrMachine As String, _
FromName As String, Message As String) As Boolean
 
    Dim ToName() As Byte
    Dim FromName() As Byte
    Dim MessageToSend() As Byte
   
    \'Put data into byte arrays
    ToName = UserOrMachine & vbNullChar
    FromName = FromName & vbNullChar
    MessageToSend = Message & vbNullChar
   
    \'Broadcast message via API
    If NetMessageBufferSend(ByVal 0&, ToName(0), ByVal 0&, _
    FromName(0), UBound(MessageToSend)) = NERR_Success Then
        \'Return True if it worked
        BroadcastMessage = True
    End If

End Function


Hvordan den bruges:

Eks:
x = BroadcastMessage(tekst1.teks, tekst2.teks, tekst3.tekst)

Tekst1 er Modtager Computerens navn (\"Min vens computer)
Tekst2 er Afsenderens navn (Kurt, Niels, Frank...)
Tekst3 er Beskeden som du vil sende til din ven
Avatar billede jsc Nybegynder
07. juni 2001 - 21:42 #8
--> slubert1
Hvad så med min vens ip?

/jsc
Avatar billede schubert1 Nybegynder
07. juni 2001 - 23:20 #9
undskyld den kode var kun til Ipx/tcp og netværk.
Jo det er rigtigt at du så skal bruge en WinSock Control.
Koden får du her:

Winsock1.RemoteHost = txtAddress.Text
Winsock1.RemotePort = \'eksempelvis 255.0.0.0.

Winsock1.Connect \'her forsøger vi så at få kontakt

Do Until Winsock1.State = sckConnected
    DoEvents: DoEvents: DoEvents: DoEvents
\'Denne loop procedure calder den anden computer op. Hvis computeren af en eller anden grund ikke svarer står den bare og kører i hak og låser computeren. Så her skal du nok tilføje lidt kode som løser det problem.
Loop

Winsock1.SendData (txtMessage.Text) \'Her sender vi så dataen

Winsock1.Close \'og her lukker vi så forbindelsen

<b>RemoteHost</b> er enten din vens computer navn eller en ip adresse.

<b>RemotePort</b> er så ip adressen du vil tilslutte dig til.

Avatar billede schubert1 Nybegynder
07. juni 2001 - 23:21 #10
se bort fra <b> og </b>
Avatar billede schubert1 Nybegynder
07. juni 2001 - 23:22 #11
Har lige overset lidt vender tilbage imorgen
Avatar billede schubert1 Nybegynder
07. juni 2001 - 23:26 #12
Jeg fandt den i mine arkiver (har sikker fået den et eller andet sted fra)
Dette skulle gøre hvad du har brug for.

Private Sub Form_Load()

On Error GoTo PortErr

    \' Listen out for any possible connection
    \' requests or data, etc.

    Winsock1.LocalPort = 202
    Winsock1.Listen

    \' This uses port 201. To work, this program
    \' must be run on two separate computers
    \' - otherwise there will be a conflict with
    \' two programs trying to access port 201

    Exit Sub
   
PortErr:

    MsgBox \"Another program is using port 201. This \" & _
    \"may be because you\'re running another copy \" & _
    \"of this program on the same computer. \" & _
    \"Unfortunately, this only works over a real \" & _
    \"network, either an office setup or the Internet. \" & _
    \"When two computers try to \'listen in\' to the same \" & _
    \"part of a computer, one of them receives an error. \" & _
    \"I am alas the unlucky soul. Sorry! Here\'s an idea \" & _
    \"though - alter my Form_Load source code, changing the \" & _
    \"LocalPort property to 202 instead of 201. This should \" & _
    \"allow you to test both programs on the same machine!\", vbCritical
       
    End

End Sub

Private Sub cmdSendMessage_Click()

    If Winsock1.State = sckConnected Then
       
        \'If connected, just send the data
       
        Winsock1.SendData (txtOutgoingMessage.Text)
       
    Else
   
        If MsgBox(\"You are not connected. \" & _
            \"Connect to \" & txtAddress.Text & \"?\", _
            vbYesNo + vbQuestion) = vbYes Then
           
            \'Connect to the remote machine
           
            Winsock1.Close
            Winsock1.RemotePort = 201
            Winsock1.RemoteHost = txtAddress.Text
            Winsock1.Connect
               
            \'Wait until full connection is made
               
            Do Until Winsock1.State = sckConnected
                DoEvents: DoEvents: DoEvents: DoEvents
                If Winsock1.State = sckError Then
                    MsgBox \"Problem connecting!\"
                    Exit Sub
                End If
            Loop
       
            \'Send the data
       
            Winsock1.SendData (txtOutgoingMessage)
       
        Else
       
            Call MsgBox(\"OK - not connected!\", vbInformation)
       
        End If
   
    End If
       
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)

    \'Accept an incoming connection request
   
    If Winsock1.State <> sckClosed Then Winsock1.Close
    Winsock1.Accept requestID

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
   
    \'Display incoming data
   
    Dim strIncoming As String
    Winsock1.GetData strIncoming
    txtIncomingMessage.Text = strIncoming
   
End Sub

/Schubert1
Avatar billede schubert1 Nybegynder
07. juni 2001 - 23:27 #13
Husk at begge computere skal have dit program eller funger det ikke 8)
Avatar billede jsc Nybegynder
08. juni 2001 - 01:05 #14
nu har jeg/vi afprøvet det og det virker ikke, (problem connection), kan du ikke forklare hvordan man skal sætte det op, altså skal vi begge havde hinandens ip\'er for at sende eller hvad?
Avatar billede schubert1 Nybegynder
09. juni 2001 - 20:00 #15
Husk at oprette et tekstfelt hvor i skriver modtagerens ip adresse. I eksemplet hedder denne txtAddress.text
Avatar billede jsc Nybegynder
05. august 2001 - 19:03 #16
--> schubert1, som jeg har skrevet før så virker det ikke, jeg afviser svaret!

/jsc
Avatar billede jsc Nybegynder
12. september 2001 - 21:50 #17
Lukker...
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