' Copy and paste into your program 'exemples de gestion de socket en UDP 'Adresse de port 1970 et 1963 $INCLUDE "RAPIDQ.INC" 'APIs Declare Function CreateThread Lib "kernel32" Alias "CreateThread" (lpThreadAttributes As long, ByVal dwStackSize As Long, lpStartAddress As Long, lpParameter As long, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long Declare Function CloseHandle Lib "kernel32" Alias "CloseHandle" (ByVal hObject As Long) As Long Declare Sub Sleepw Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long) Declare Function TerminateThread Lib "kernel32" Alias "TerminateThread" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long 'Subs Interne declare sub thread declare sub essai(sender as qbutton) declare sub essai1(sender as qbutton) declare sub essai2(sender as qbutton) 'les Globales dim drap as integer dim numSock as integer dim numSock1 as integer dim hThread as long 'Construction de la fenêtre CREATE Form AS QFORM Caption = "Creation de thread" Width = 320 Height = 240 Center CREATE Sock AS QSOCKET 'création du socket en mode UDP Protocol=17 type=2 END CREATE CREATE Button1 AS QBUTTON Caption = "Lancer le Thread" Left = 152 Top = 11 width=120 onclick = essai END CREATE CREATE Button2 AS QBUTTON Caption = "Arreter le Thread" Left = 152 Top = 35 width=120 onclick = essai1 END CREATE CREATE Button3 AS QBUTTON Caption = "Delta T" Left = 152 Top = 60 width=120 onclick = essai2 END CREATE CREATE Edit1 AS QEDIT Text = "Edit1" Left = 15 Top = 16 TabOrder = 9 END CREATE CREATE Edit2 AS QEDIT Text = "Edit1" Left = 15 Top =36 TabOrder = 9 END CREATE CREATE Edit3 AS QEDIT Text = "Edit1" Left = 15 Top = 56 TabOrder = 9 END CREATE CREATE Edit4 AS QEDIT Text = "Edit1" Left = 15 Top = 76 TabOrder = 9 END CREATE END CREATE Form.showmodal sub essai 'Lance le thread de lecture dim lpThreadId as long dim test as long dim ptrt as long 'init des params ptrt=varptr(lpThreadId) Add = CODEPTR(thread) 'ouvre la socket mode brodcast xxx.xxx.xxx.255 'Changer l'adresse IP en fonction de la votre 'envoi vers un seul PC IP= 191.9.202.51 a titre d'exemple numSock = Sock.Connect("191.9.202.255", 1963) 'port reception numSock1=sock.open(1970) 'creation du thread hThread= CreateThread (byval 0&,byval 0&, Add , byval 0&, ByVal 0&, ptrt ) edit3.text=str$(hThread) end sub sub essai1 'ferme le thread dim ess as long dim test as long ess =TerminateThread(hThread, 0) test=CloseHandle(hThread) 'ferme la socket sock.writeline(numsock,"fin") sock.close(numsock) sock.close(numsock1) end sub sub thread dim t1 as single dim este as string*255 dim i as integer drap=0 'boucle infini while drap=0 'lecture de la socket if sock.IsServerReady(numSock1)=true then edit1.text= Sock.Read(numSock1,32000) edit2.text = sock.Gethostip end if 'afin de ne pas manger du temps Process sleepw(1) sock.write(numsock,str$(timer)+" de T0",len(str$(timer))+6) edit3.text=str$(timer-t1) t1=timer wend end sub sub essai2 'sauve garde de edit3 en ms edit4.text=str$(val(edit3.text)*1000) & " ms" end sub