Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net CS全球攻势的RCON客户端_.net_Vb.net_Tcp_Tcpclient - Fatal编程技术网

.net CS全球攻势的RCON客户端

.net CS全球攻势的RCON客户端,.net,vb.net,tcp,tcpclient,.net,Vb.net,Tcp,Tcpclient,大家好,, 我正在尝试使用VisualStudio.NET用Basic编写自己的小RCON工具。 程序正确地发送数据,因此我假设发送和连接部分工作正常。游戏服务器正确执行命令,但我没有收到任何消息 我的函数buildTcpPacket只是根据 参数是第一次连接时的实际命令或密码、命令请求类型2、身份验证请求类型3和数据包ID,根据我的研究,除非打开多个连接,否则这些参数并不重要 到目前为止,我已经尝试过两种非常相似的方法: 方法1: 方法2: 我创建方法2只是为了确保方法1除了RCON

大家好,,

我正在尝试使用VisualStudio.NET用Basic编写自己的小RCON工具。 程序正确地发送数据,因此我假设发送和连接部分工作正常。游戏服务器正确执行命令,但我没有收到任何消息

我的函数buildTcpPacket只是根据

参数是第一次连接时的实际命令或密码、命令请求类型2、身份验证请求类型3和数据包ID,根据我的研究,除非打开多个连接,否则这些参数并不重要

到目前为止,我已经尝试过两种非常相似的方法:

方法1:

方法2:

我创建方法2只是为了确保方法1除了RCON部分没有其他问题,因为它嵌入到一个更大、更复杂的程序中

如果我的英语很糟糕,我很抱歉,非常感谢您的帮助。

找到了解决方案:Encoding.ASCII.GetString在找到终止符符号后结束对流/数组的编码。出于某种奇怪的原因,RCON服务器似乎在实际应答之前发送了乱七八糟的数据

很抱歉,我无法提供任何代码,在迁移到新计算机时丢失了我的项目。但是,如果有人遇到同样的问题,我仍然想提供一个答案

Public Function connect() As String
    Try
        ' First, build the authentictation request.
        Dim authPacket As Byte() = buildTcpPacket(rcon_password, 3, 1)
        ' Create a TCP-client.*
        client = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
        ' Connect the client to the server.
        client.Connect(ip, rcon_port)
        ' Try to autheticate.
        client.Send(authPacket)
        ' Create the buffer to read to. Max. package size is 4096 byte.
        Dim buffer(4095) As Byte
        ' Listen for the answer.
        client.Receive(buffer)
        Return System.Text.ASCII.Encoding.getString(buffer)
    Catch ex As Exception
        MessageBox.Show(ex.Message)
        Return "-1"
    End Try
End Function

Public Function sendCommand(ByVal rconCommand As String) As String
    Try
        ' Build the package with Type = 2 (= Input to server).
        Dim cmdPacket As Byte() = buildTcpPacket(rconCommand, 2, 1)
        ' Send the command.
        client.Send(cmdPacket, SocketFlags.None)
        ' Create the buffer to read to. Max. package size is 4096 byte.
        Dim buffer(4095) As Byte
        ' Listen for the answer.
        client.Receive(buffer)
        Return Encoding.ASCII.GetString(buffer)
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Function
Private Sub connect()
    Try
        Dim client As New TcpClient(server, port)
        Dim data As Byte() = buildTcpPacket(rcon_password, 3, id)
        Dim stream As NetworkStream = client.GetStream()
        stream.Write(data, 0, data.Length)

        data = New Byte(4095) {}
        Dim bytes As Int32 = stream.Read(data, 0, data.Length)
        Dim response As String = Encoding.ASCII.GetString(data, 0, bytes)
        MsgBox("received: " & response)

        data = buildTcpPacket(rcon_command, 2, id)
        stream.Write(data, 0, data.Length)

        data = New Byte(4095) {}
        bytes = stream.Read(data, 0, data.Length
        response = Encoding.ASCII.GetString(data, 0, bytes)
        MsgBox("received: " & response)

        stream.Close()
        client.Close()
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub