mqqep 发表于 2017-9-20 23:44:18

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

接收端
$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

请问该怎么写,如果分两次发送接收端写配置弄不来

kk_lee69 发表于 2017-9-21 00:05:25

回复 1# mqqep

幹嘛分兩次送你不會合併成字串一次送 然後接收後再 拆分就好

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获取问题

另外我是初学,据说字符串拆分要用到正则,我不会,如果不用正则,随便来个拆分的例子关键字我学习吧,谢谢。

fenhanxue 发表于 2017-9-21 01:03:20

2楼是一个方案,另外,帮助文件已经提供了S端获取C端IP的函数,请仔细看帮助说明Func SocketToIP($SHOCKET)
    Local $sockaddr, $aRet

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

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

    $sockaddr = 0

    Return $aRet
EndFunc   ;==>SocketToIP

mqqep 发表于 2017-9-21 01:09:59

回复 4# fenhanxue


    对,现在用的是这个,帮助文档的网络管理里面确实没有看到有提供这个函数的,有可能是我文档版本原因

kk_lee69 发表于 2017-9-21 01:40:36

回复 1# mqqep


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

http://www.autoitx.com/forum.php?mod=viewthread&tid=44691&highlight=

jcaixuexi 发表于 2017-9-22 16:12:06

接收端可以考虑文件共享,设置ini文件所有人都有权限访问到,IniWrite
写入客户端相关信息进去。
页: [1]
查看完整版本: 客户端运行后获取机器名和IP,在接收端clientip.ini自动增加ini配置如何写