allora finalmente ci sono, non sò se è il metodo più corretto, comunque funziona, quello che mi interessa sapere, è se è normale l' uso di due winsock per interfaccia, posto il codice parziale funzionante lato client e server, magari a qualcuno potrebbe interessare, se poi ci sono delle migliorie attendo notizie:


codice:
Option Explicit


Private Sub Command1_Click()
If Winsock1.State <> sckClosed Then Winsock1.Close
If Winsock2.State <> sckClosed Then Winsock2.Close
Winsock1.Connect "indirizzo", 4001
Winsock2.Connect "indirizzo", 4002
End Sub

Private Sub Command2_Click()
Winsock2.SendData "apri"


Dim immagine() As Byte
Open "C:\prova.bmp" For Binary As #1
ReDim immagine(0 To LOF(1) - 1)
DoEvents
Get #1, , immagine
Winsock1.SendData immagine()
Close #1

End Sub

Private Sub Winsock1_SendComplete()
Winsock2.SendData "fine"
End Sub


*********************************************

Option Explicit

Private Sub Form_Load()
Winsock1.LocalPort = 4001
Winsock1.Listen
Winsock2.LocalPort = 4002
Winsock2.Listen
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
   If Winsock1.State <> sckClosed Then Winsock1.Close
   Winsock1.Accept requestID
    
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim immagine() As Byte
Winsock1.GetData immagine
Put #1, , immagine()
DoEvents
End Sub

Private Sub Winsock2_ConnectionRequest(ByVal requestID As Long)
   If Winsock2.State <> sckClosed Then Winsock2.Close
      Winsock2.Accept requestID
   
End Sub

Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
Dim dati As String

Winsock2.GetData dati, vbString
If Left(dati, 4) = "apri" Then
  Open App.Path & "\imm.bmp" For Binary Access Write As #1
  DoEvents
  Text1.Text = dati
  Else
  If Left(dati, 4) = "fine" Then
  Text1.Text = dati
  DoEvents
  Close #1
  DoEvents
  Picture1.Picture = LoadPicture(App.Path & "\imm.bmp")
  DoEvents
  Kill (App.Path & "\imm.bmp")
  End If
  End If
End Sub