破帽遮颜 发表于 2008-6-23 16:28:57

谁有网管呼叫类的源码分享一下?

下了好几个,单台电脑上测试正常,可局域网内就不能用了!
哪位大大好心收藏有的,拿来分享一下,谢谢!

想学习一下看看,呵呵~

[ 本帖最后由 破帽遮颜 于 2008-6-24 11:12 编辑 ]

jiangzhanye 发表于 2008-6-23 20:04:17

服务端:

UDPStartup()
$socket = UDPBind(@IPAddress1, 8410)
If @error <> 0 Then Exit
While 1
    $data = UDPRecv($socket, 50)
    If $data <> "" Then
   If StringInStr($data,"client:") Then
    $ip=StringSplit($data,":")
    $socket1=UDPOpen($ip,8411)
    $send=UDPSend($socket1,"server:"&@IPAddress1)
    Sleep(100)
    UDPCloseSocket($socket1)
   EndIf
   ;其他代码.
    EndIf
    sleep(10)
WEnd

Func OnAutoItExit()
    UDPCloseSocket($socket)
    UDPShutdown()
EndFunc

客户端:

$objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled != 0", "WQL", 0x10 + 0x20)
If IsObj($colItems) then
For $objItem In $colItems
Dim $netmask=""
$localIP=$objItem.IPAddress(0)
$ip=StringSplit($localIP,".")
$net=StringSplit($objItem.IPSubnet(0),".")
For $i=1 To $ip
   If $i = $ip Then
    $netmask=$netmask&BitOR($ip[$i],BitXOR($net[$i],255))
   Else
    $netmask=$netmask&BitOR($ip[$i],BitXOR($net[$i],255))&"."
   EndIf
Next
If Ping($netmask,10) Then
   UDPStartup()
   $socket = UDPOpen($netmask, 8410)
   $socket1 = UDPBind($localIP,8411)
   $status = UDPSend($socket, "client:"&$localIP )
   If $status <> 0 then
    UDPCloseSocket($socket)
    While 1
   $data = UDPRecv($socket1, 50)
   If StringInStr($data,"server:") Then
      $serverip=StringSplit($data,":")
      UDPCloseSocket($socket1)
      UDPShutdown()
      MsgBox(0,"服务器IP是:",$serverip)
      Exit
   EndIf
    WEnd
   EndIf
EndIf
Next
EndIf

zhuang513 发表于 2009-4-23 14:53:28

收藏了. 谢谢楼上

gyxzhh 发表于 2010-1-22 17:04:00

回复 3# zhuang513


    好强呀

adasir 发表于 2010-5-29 11:24:00

很不错,学习勒

shuangsexing 发表于 2011-7-9 09:00:36

深奥!!学习学习

风行月影 发表于 2011-12-28 21:00:42

谢谢分享@@!~
页: [1]
查看完整版本: 谁有网管呼叫类的源码分享一下?