'创建UDP网络通信
'lpCallBack   回调函数指针
'Port         端口号，如同对讲机的频道，手机的电话
'Custom       自定值，任意数值，会出现在回调函数里
'例题：
'Dim Shared hSockas Any Ptr 
'创建
'hSock=network_UDP_Create(@xSock_UDP_Proc,6)
'销毁
'UDP_Destroy(hSock)
'发送
'network_UDP_Send Sock1,"内容","192.168.1.116",6
' 回调
'Sub xSock_UDP_Proc(Sock as Integer, nEvent as Integer, lpOverlapped as Any Ptr, Size as Integer, Custom as Integer)
'Sock 创建时返回的那个指针  nEvent 事件  lpOverlapped 数据指针 长度 自定
'Print Sock, nEvent , lpOverlapped , Size , Custom
'    Select Case nEvent
'        Case IOCP_UDP_RECV '数据到达
'                Dim RecvPack as ZString Ptr
'                Dim RecvIP as ZString Ptr
'                Dim RecvPort as UShort
'                RecvPack = UDP_Read(lpOverlapped, RecvIP, RecvPort)
'                '取到达数据指针与地址 [重叠地址] [IP地址] [端口]
'                Print "数据到达" &  Hex(RecvPack),RecvIP,RecvPort
'                If RecvPack Then
'                    FF_Control_SetText( HWND_FORM1_TEXT4, *RecvPack )
'                EndIf
'        Case IOCP_UDP_SEND '发送成功
'            Print "发送成功"
'        Case IOCP_UDP_ESEND '发送失败
'            Print "发送失败"
'    End Select
'End Sub
#Include Once "inc/Iocp.bi"
Function network_UDP_Create(lpCallBack as Any Ptr, Port as UShort, Custom as Integer = 0) as Any Ptr
   Dim IPv4 as String = GetNativeIP & Chr(0) 'IPv4    IP地址，必须是自己本机的局域网 IP
   Function = UDP_Create(StrPtr(IPv4), Port, Null, lpCallBack, 1, Custom)
   '创建UDP [欲绑定的IP地址] [本服务的端口号]
   '[套接字属性设置回调 结构：返回值 整数型，参数1：类型 整数型，参数2：套接字句柄 整数型（不设置填写 0）]
   '[事件处理函数的地址 结构：无返回值，参数1：UDP句柄 整数型，参数2：事件类型 整数型，参数3：重叠地址 整数型，参数4：数据长度 整数型，参数5：自定义 整数型]
   '[线程数] [自定义]
End Function