ciao,
la mia app è cos' composta:
lato server questa è in grado di accettare connessioni multiple:
lato clientcodice: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
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 Subbene l' applicazione funziona anche se come suggerito da qlc non ottimale.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
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?

Rispondi quotando