找回密码
 加入
搜索
查看: 3355|回复: 6

[AU3基础] 客户端运行后获取机器名和IP,在接收端clientip.ini自动增加ini配置如何写

    [复制链接]
发表于 2017-9-20 23:44:18 | 显示全部楼层 |阅读模式
接收端
$ConnectedSocket=-1
$ConnectedSocket = TCPAccept($MainSocket)
        $sRecv = TCPRecv($ConnectedSocket, 2048, 1);256)

        If $sRecv <> "" Then ; 接收到客户端发送的数据,开始处理
                $sRecv = BinaryToString($sRecv, 4)
                IniWrite("clientip.ini",$sRecv,"IP","")
        GUICtrlSetData($List1,_NowDate() & ":" & _NowTime() & ':   ' &"自动增加客户端配置成功)" & @CRLF)

客户端
$serverip=IniRead("serverip.ini","服务器地址","IP","")
$Socke=-1
        $Socket = TCPConnect($serverip, 65431);创建一个套接字(socket)连接到已经存在的服务噿
    If $Socket = -1 Then
                MsgBox(0, "提示", "服务端未开启请联系管理员!", 0)
                exit
EndIf
        $sMsg = StringToBinary(@ComputerName, 4);转换字符串为二进制数捿方便与发送数据给服务噿
        TCPSend($Socket, $sMsg)
        $sMsg1 = StringToBinary("IP="&@IPAddress1, 4);转换字符串为二进制数捿方便与发送数据给服务噿
        TCPSend($Socke,$sMsg1)



目的:客户端运行后获取机器名和IP,在接收端clientip.ini自动增加ini配置,格式为
[机器名]
IP=X.X.X.X

请问该怎么写,如果分两次发送接收端写配置弄不来
发表于 2017-9-21 00:05:25 | 显示全部楼层
回复 1# mqqep

幹嘛分兩次送  你不會合併成字串  一次送 然後接收後再 拆分就好
 楼主| 发表于 2017-9-21 00:38:38 | 显示全部楼层
回复 2# kk_lee69


    DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, "ptr", DllStructGetPtr($sockaddr), "int*", DllStructGetSize($sockaddr))

论坛找到 函数将从一个连接套接字返回IP地址的方法解决了IP获取问题

另外我是初学,据说字符串拆分要用到正则,我不会,如果不用正则,随便来个拆分的例子关键字我学习吧,谢谢。
发表于 2017-9-21 01:03:20 | 显示全部楼层
2楼是一个方案,另外,帮助文件已经提供了S端获取C端IP的函数,请仔细看帮助说明
Func SocketToIP($SHOCKET)
    Local $sockaddr, $aRet

    $sockaddr = DllStructCreate("short;ushort;uint;char[8]")

    $aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
            "ptr", DllStructGetPtr($sockaddr), "int*", DllStructGetSize($sockaddr))
    If Not @error And $aRet[0] = 0 Then
        $aRet = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($sockaddr, 3))
        If Not @error Then $aRet = $aRet[0]
    Else
        $aRet = 0
    EndIf

    $sockaddr = 0

    Return $aRet
EndFunc   ;==>SocketToIP
 楼主| 发表于 2017-9-21 01:09:59 | 显示全部楼层
回复 4# fenhanxue


    对,现在用的是这个,帮助文档的网络管理里面确实没有看到有提供这个函数的,有可能是我文档版本原因
发表于 2017-9-21 01:40:36 | 显示全部楼层
回复 1# mqqep


    你研究看看 下面的這篇資料吧   保證你很有收益

http://www.autoitx.com/forum.php ... 4691&highlight=
发表于 2017-9-22 16:12:06 | 显示全部楼层
接收端可以考虑文件共享,设置ini文件所有人都有权限访问到,IniWrite
写入客户端相关信息进去。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-21 18:12 , Processed in 0.072227 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表