gpt4 book ai didi

c# - 未从对服务器的 rcon 请求获得完整响应

转载 作者:行者123 更新时间:2023-11-30 18:41:29 24 4
gpt4 key购买 nike

我正在使用 C# 查询使命召唤 4 rcon 以获取玩家的状态,它工作正常但似乎没有收到超过 1303 个字符的响应。

public string sendCommand(string rconCommand, string gameServerIP,
string password, int gameServerPort)
{
Socket client = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram,
ProtocolType.Udp);
client.Connect(IPAddress.Parse(gameServerIP), gameServerPort);

string command;
command = "rcon " + password + " " + rconCommand;
byte[] bufferTemp = Encoding.ASCII.GetBytes(command);
byte[] bufferSend = new byte[bufferTemp.Length + 4];

bufferSend[0] = byte.Parse("255");
bufferSend[1] = byte.Parse("255");
bufferSend[2] = byte.Parse("255");
bufferSend[3] = byte.Parse("255");
int j = 4;

for (int i = 0; i < bufferTemp.Length; i++)
{
bufferSend[j++] = bufferTemp[i];
}

IPEndPoint RemoteIpEndPoint
= new IPEndPoint(IPAddress.Parse(gameServerIP), 0);
client.Send(bufferSend, SocketFlags.None);
byte[] bufferRec = new byte[64999];
client.Receive(bufferRec);
return Encoding.ASCII.GetString(bufferRec);
}

显然其他人似乎对此没有问题,但我却遇到了问题。有人有什么想法吗?

最佳答案

我对 Quake RCON 协议(protocol)的内存是模糊的,但我相信特殊的 header 是 5 个字节,0xFF 0xFF 0xFF 0xFF 0x02。如果 COD4 不是这种情况,请忽略此建议。

此外,您不能依赖一次调用 Socket.Receive 就接收到所有数据。我对 Quake RCON 的体验并不总是“如预期的那样”最好的返回。

byte[] bufferSend = new byte[bufferTemp.Length + 5 ];
bufferSend[0] = 0xFF;
bufferSend[1] = 0xFF;
bufferSend[2] = 0xFF;
bufferSend[3] = 0xFF;
bufferSend[4] = 0x02;
Buffer.BlockCopy(bufferTemp, 0, bufferSend, 5, bufferTemp.Length);
...

StringBuilder response = new StringBuilder();
byte[] bufferRecv = new byte[65536];
do
{
// loop on receiving the bytes
int bytesReceived = client.Receive(bufferRecv);

// only decode the bytes received
response.Append(Encoding.ASCII.GetString(bufferRecv, 0, bytesReceived));
} while (client.Available > 0);

return response.ToString();

关于c# - 未从对服务器的 rcon 请求获得完整响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6728032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com