Buonasera a tutti, in un programma in vb6 di qualche tempo fa avrei la necessità di integrare una comunicazione UDP in broadcast ma ho qualche problema.
L'intenzione sarebbe quella di inviare sulla rete locale una richiesta alla quale i dispositivi Arduino che sono collegati dovrebbero rispondere con il loro stato di funzionamento.
Uso W7 64 con VS6 installato e con SP6.
Il problema è che quando avvio il programma tento di inviare un messaggio con il winsock in udp il messaggio non arriva agli altri pc ed invece parte l'evento DataArrival del Winsock locale e mi rende il messaggio che ho inviato io. Quindi io invio "ciao" ed agli altri non arriva niente, ma arriva alla mia applicazione "ciao" ovviamente dal mio stesso ip addr. Quando invece ricevo un messaggio udp da altri il sistema inizia a funzionare correttamente, quindi non mi ritornano più i messaggi che ho mandato io ed agli altri arrivano i miei.
Ho controllato con Wireshark ma pare proprio che nella fase iniziale i messaggi non passino proprio dalla rete fino a quando non passa un messaggio udp qualsiasi allora parte tutto.
Ho fatto qualche ricerca ma non ho trovato soluzioni al problema, ho provato a staccare Avast, ho controllato il firewall di windows ma pare che in uscita non abbia grosse limitazioni, inizio a pensare che possa essere un problema di compatibilità tra VS6 e i SO.
Le prove le ho fatte tra W7 64 e W10 64.
Ringrazio per la disponibilità.
Di seguito il codice della parte in questione.
Private Sub Form_Load()
Winsock1.Close
Winsock1.Protocol = sckUDPProtocol
Winsock1.RemoteHost = "255.255.255.255"
Winsock1.RemotePort = "8888"
Winsock1.Bind 8888
End Sub
Private Sub Command1_Click()
Winsock1.SendData Text1.Text
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim str As String
Winsock1.GetData str, vbString
Text2 = Text2 & Format(Now, "dd/mm/yyyy hh:mm:ss") & " -- "& Winsock1.RemoteHostIP & " -- "& str & Chr(13) & Chr(10)
End Sub