Avatar billede razmuz_dk Nybegynder
17. september 2001 - 19:22 Der er 4 kommentarer og
1 løsning

\"Server ting\" ...

Er ved at prøve at lave en lille \"server\" applikation i Visual Basic 5.0 med Winsock 5.0.

Har brugt denne kode (som jeg har lånt fra asp.dk ;)

Private Sub Wsck_DataArrival(ByVal bytesTotal As Long)
    wsck.GetData TestData, vbString
    IP = wsck.RemoteHost
    Port = wsck.RemotePort
    MsgBox TestData + \"from \" + IP + \" at port \" + Port
End Sub
Private Sub Form_Load()
serverport = \"2777\"

Label1.Caption = \"Server is listening at port \" + serverport

wsck.Protocol = sckUDPProtocol
MsgBox (wsck.LocalIP)
wsck.LocalPort = serverport
wsck.Bind
End Sub


Men når jeg prøver at etablere forbindelse til min localhost via Telnet på port 2777 virker det ikke...

What 2 do!?

\\\\ -RAZ
Avatar billede sjh Nybegynder
17. september 2001 - 20:23 #1
Her er to små programmer Client og Server

\'------------------------------ Client ------------------------------
\'Brug til client: Text1 og Command1 og Winsock1
\'--------------------------------------------------------------------
Private Sub cmdConnect_Click()
Winsock1.Close \'Lukker winsock
Winsock1.Connect \"127.0.0.1\", 8812 \'Connect til server over port 8812
End Sub

Private Sub cmdDisconnect_Click()
Winsock1.Close \'Lukker winsock
End Sub

Private Sub cmdSenddata_Click()
Winsock1.SendData Text1.Text \'Send data til server
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim NewData As String
    Winsock1.GetData NewData, vbString, bytesTotal \'Henter data når server sender data
Text1.Text = NewData \'Data bliver vist i Text1
End Sub
\'------------------------------ Client ------------------------------


\'------------------------------ Server ------------------------------
\'Brug til server: Text1 og Timer1 og Winsock1
\'--------------------------------------------------------------------
Private Sub Form_Load()
Timer1.Interval = 4000 \'Setter Timer1 til 4 sec
Winsock1.LocalPort = 8812 \'Setter port til 8812
Winsock1.Close \'Lukker winsock
Winsock1.Listen \'Søger efter client
End Sub

Private Sub Timer1_Timer()
If Winsock1.State <> 7 Then \'7 = connected
Winsock1.Close \'Lukker winsock
Winsock1.Listen \'Søger efter client
End If
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close \'Lukker winsock
Winsock1.Accept requestID \'Accept Connection
Winsock1.SendData \"Successfull connection\" \'Sender \"Successfull connection\" til client
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim NewData As String
    Winsock1.GetData NewData, vbString, bytesTotal \'Henter data når client sender data
Text1.Text = NewData \'Data bliver vist i Text1
End Sub
\'------------------------------ Server ------------------------------
Avatar billede razmuz_dk Nybegynder
17. september 2001 - 20:29 #2
aah - thx! du får pointene ..

men forklar lige den her

Private Sub Timer1_Timer()
If Winsock1.State <> 7 Then \'7 = connected
Winsock1.Close \'Lukker winsock
Winsock1.Listen \'Søger efter client
End If
End Sub

så er du flink! :)
Avatar billede sjh Nybegynder
17. september 2001 - 20:46 #3
hvis client connecter er Winsock1.State = 7 så lukker winsock ikke og listen, men hvis client disconnecter skal server søge igen.

prøv sådan: (Me.Caption = Winsock1.State)

Private Sub Timer1_Timer()
Me.Caption = Winsock1.State \'Status
If Winsock1.State <> 7 Then \'7 = connected
Winsock1.Close \'Lukker winsock
Winsock1.Listen \'Søger efter client
End If
End Sub
Avatar billede razmuz_dk Nybegynder
17. september 2001 - 20:59 #4
allrighty ..
sidste ting!! :)

hva\' er forskellen på

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
og
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Avatar billede sjh Nybegynder
17. september 2001 - 21:24 #5
ConnectionRequest:
jeg er ikke helt sikker på ConnectionRequest men det er nok når client connecter giver den en vadi som server skal sende data til.


DataArrival:
når client sender data forteller DataArrival at der er data

NewData = den data som er sendt fra....
bytesTotal = lengten på den data som er sendt fra....
vbString = String

Winsock1.GetData NewData, vbString, bytesTotal



håber det er hjælp nok ;)
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