- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
<我>大家好,
我正在尝试使用 VisualStudio.NET 在 Basic 中编写我自己的小型 RCON 工具。该程序正确发送数据,因此我假设“发送”和“连接”部分工作正常。游戏服务器正确执行命令,但我没有收到任何返回消息。
我的函数 buildTcpPacket
只是根据 source-rcon-protocol 构建一个字节数组。 .
参数是实际命令(或第一次连接时的密码),请求类型(2个命令,3个身份验证)和数据包的ID,根据我的研究,这并不重要,除非多个连接已打开。
到目前为止,我已经尝试了两种非常相似的方法:
方法一:
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
和方法2:
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
我只创建方法 2 以确保方法 1 除了 RCON 部分没有其他问题,因为它嵌入到更大、更复杂的程序中。
如果我的英语很糟糕,我很抱歉,感谢大家的帮助。
最佳答案
找到解决方案:Encoding.ASCII.GetString()
在找到终止符号后结束对流/数组的编码。由于某些奇怪的原因,RCON 服务器似乎在实际应答之前发送了乱码数据。
抱歉,我无法提供任何代码,在迁移到新机器时丢失了我的项目。不过,如果有人遇到同样的问题,我仍然想提供一个答案。
关于.net - CS 全局攻势的 RCON 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25505808/
我正在尝试设置 rcon 函数,并且我正在使用 node-rcon 。随着example provided它工作完美,但对于我的代码,它不起作用,我不明白为什么。知道我的代码有什么问题吗?它不会抛出任
我正在使用 C# 查询使命召唤 4 rcon 以获取玩家的状态,它工作正常但似乎没有收到超过 1303 个字符的响应。 public string sendCommand(string rconCom
我正在为 Insurgency(源引擎游戏)专用服务器编写 RCON 客户端。我正在使用RCON protocol由 Valve 定义,用于所有使用 Source 引擎的游戏。我可以成功地将命令发送到
我正在致力于为 Minecraft 实现 RCON,它使用 Valve rcon 协议(protocol),并且我已经掌握了 C 源代码并尝试将其实现到 Java 中,这就是我到目前为止所做的: 创建
大家好, 我正在尝试使用 VisualStudio.NET 在 Basic 中编写我自己的小型 RCON 工具。该程序正确发送数据,因此我假设“发送”和“连接”部分工作正常。游戏服务器正确执行命令,但
我正在为使命召唤黑色行动创建一个 RCON 网络应用程序。 COD 使用 rcon 和 udp 数据包发送和接收信息。使用以下代码,我已经能够使用 COD4 服务器发送和接收信息。现在 COD7 已经
我再次需要你的帮助来解决我的这个问题......已经一天了,我似乎无法找出为什么我的代码和输出会发生这种情况。 好的.....所以基本上我正在尝试实现 RCON Protocol C# 中的 Valv
我是一名优秀的程序员,十分优秀!