17. september 2001 - 19:22Der 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...
\'------------------------------ 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 ------------------------------
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
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
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 ;)
Synes godt om
Ny brugerNybegynder
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.