foreach(BruteforceEntry be in Entries.Values)
{
if (be.AddedTimeRemove <= now)
Entries.Remove(be.IPAddress);
else if (be.Unbantime <= now && be.Unbantime.Day == DateTime.Now.Day)
Entries.Remove(be.IPAddress);
}
Run Code Online (Sandbox Code Playgroud)
抛出异常:
收集被修改; 枚举操作可能无法执行.
出于某种原因,它已经不复存在了.
我知道你不能删除某些东西,而是以这种方式迭代它.我的问题是:我该如何解决?
我有一个MMORPG模拟器,这意味着它将处理相当多的数据包.目前,我正在使用指针,因为我认为正确使用它们可以加快我的服务器,但是我有两个朋友,一个告诉我使用指针,他认为我可以使用它们而不会遇到麻烦,我的其他朋友说我不应该使用指针,因为它们可能会使我的服务器崩溃,它们不安全,并且它们不易管理.
我使用结构作为我的数据包结构,所以例如我可以使用以下行获取它的类型:Ptr-> Type;
你怎么看?
我想使用按位运算符创建一个很好的加密.但是我没有这样做.
我希望它有按位运算符使用字节数组来加密和解密我的字节数组.
public class Cryptographer
{
private byte[] Keys { get; set; }
public Cryptographer(string password)
{
Keys = Encoding.ASCII.GetBytes(password);
}
public void Encrypt(byte[] data)
{
for(int i = 0; i < data.Length; i++)
{
data[i] = (byte) (data[i] & Keys[i]);
}
}
public void Decrypt(byte[] data)
{
for (int i = 0; i < data.Length; i++)
{
data[i] = (byte)(Keys[i] & data[i]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我知道这是错的,这就是我需要帮助的原因.我只是希望它使用1个字符串来加密和解密所有数据.
我正在尝试创建一个属性,它将从我的字节数组(byte [])生成一个指针(byte*),这确实有效,但每当我修改这个返回的指针时,我的字节数组都不会被修改,这是一块我想要使用的代码.
public unsafe class PacketWriter
{
private readonly byte[] _packet;
private int _position;
public byte* Pointer
{
get
{
fixed (byte* pointer = _packet)
return pointer;
}
}
public PacketWriter(int packetLength)
{
_packet = new byte[packetLength];
}
//An example function
public void WriteInt16(short value)
{
if (value > Int16.MaxValue)
throw new Exception("PacketWriter: You cannot write " + value + " to a Int16.");
*((short*)(Pointer + _position)) = (short) value;
_position += 2;
}
//I would call this function to …Run Code Online (Sandbox Code Playgroud)