ciao,
la mia app è cos' composta:
lato server questa è in grado di accettare connessioni multiple:
codice:
Private Sub Winsock1_ConnectionRequest(Index As Integer, _
ByVal requestID As Long)
Text2.Text = Text2.Text & "Accettata connessione con : " & _
Winsock1(Index).RemoteHostIP & vbCrLf
ListView1.ListItems.Add , , Winsock1(Index).RemoteHostIP, 1, 3
NumSockets = NumSockets + 1
Load Winsock1(NumSockets)
Winsock1(NumSockets).Accept requestID
List3.AddItem Winsock1(NumSockets).Index & ": " & Winsock1(Index).RemoteHostIP & " Ora:" & Time & " " & Date
Label2.Caption = "Utenti in linea " & ListView1.ListItems.Count
DoEvents
Timer1.Enabled = True
Timer1.Interval = 200
End Sub
Private Sub Winsock1_DataArrival(Index As Integer, ByVal _
bytesTotal As Long)
Dim vtData As String
Dim n As Integer
Winsock1(Index).GetData vtData, vbString
Text2.Text = Text2.Text & vtData & vbCrLf
On Error Resume Next
For n = 1 To NumSockets
Winsock1(n).SendData "<%%<" & vtData
ListView1.ListItems(n).ListSubItems.Add , , vtData, 1, 1
Next
End Sub
lato client
questo a connessione avvenuta riceverà una lista di tutti i client connessi al server:
codice:
Private Sub Command1_Click()
On Error Resume Next
Open App.Path & "\ip.txt" For Output As #1
Close #1
Timer1.Interval = 500
Winsock1.Connect Text2.Text, Text3.Text
Label5.Caption = "Ricerca.. IP"
Timer3.Interval = 30
End Sub
codice:
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim dati As String
Winsock1.GetData dati, vbString
If Left(dati, 4) = "<%%<" Then
Text1.Text = Replace$(Text1.Text & dati, "<%%<", "") & vbCrLf
Exit Sub
Else
Open App.Path & "\ip.txt" For Output As #1
Print #1, dati
Close #1
DoEvents
Timer2.Enabled = True
Timer2.Interval = 3000
Timer3.Enabled = True
End If
bene l' applicazione funziona anche se come suggerito da qlc non ottimale.
Adesso visto che i vari client connessi al server riceveranno una lista dei client connessi, come posso fare a far sì che se un client vuole connettersi ad un altro client presente nella lista senza passare dal server, ma restando connesso al server?