小编Val*_*tin的帖子

C#数组还是字典?

我想知道C#数组是否具有恒定的访问速度?
我需要在静态数组中存储1000个项目,这些项目将在服务器启动期间初始化.此数组将以只读方式使用,因此不会对数组进行任何更改.
我应该使用简单的C#数组(新的MyClass [])或字典.

我是C#的新手,并试图了解C#数组访问是如何工作的.
它们可以通过速度与c ++数组进行比较吗?

c# arrays optimization performance data-structures

16
推荐指数
1
解决办法
2万
查看次数

困惑如何使用AES和HMAC

我有点困惑如何在从服务器向客户端传输加密消息时以正确的方式使用AES和HMAC(基于SHA-256),反之亦然

如果以下方法错误,请纠正我:

  1. 从密钥文件中获取安全密钥(例如,我们建议使用AES-256,我们已经有一个有效的256位长度密钥)
  2. 为AES-256生成随机IV,以确保相同的纯文本具有不同的加密输出.
  3. 使用纯文本和安全密钥计算HMAC-SHA-256.(第一个问题:我应该使用IV进行HMAC计算吗?例如附加到安全密钥?)
  4. 使用AES-256加密纯文本.
  5. 为客户撰写如下消息:HMAC + IV + ENCRYPTED_MESSAGE

最大的问题是:是否有可能不以某种方式将IV发送给客户端,而是以相同的方式生成它并且仍然是加密安全的?或者也可以发送IV吗?

我最终得到随机IV生成,因为需要相同的纯文本将以不同的加密结果结束.

cryptography aes hmac

12
推荐指数
1
解决办法
2万
查看次数

epoll表现

谁能帮助我回答有关epoll_wait的问题.

  1. 使用许多线程在相同的fds集上调用epoll_wait以服务于大约100K活动套接字是否过度?或者仅仅创建一个线程来执行epoll_wait就足够了?

  2. 例如,只有一个套接字准备好读取数据时,epoll_wait会唤醒多少个线程?我的意思是,有两个或更多线程从epoll_wait唤醒但在结果事件中会有相同的fds的情况吗?

  3. 在服务器中组织线程的最佳方法是什么,它适用于许多活动客户端(例如50K +).我认为最好的方法是:1个I/O工作线程,它可以执行epoll_wait和i/o操作.+ 许多数据处理线程将处理从I/O工作线程接收的数据(可能需要很长时间,例如任何游戏逻辑)并为I/O工作线程编写新数据以发送给客户端.我是对的,或者任何人都可以帮助我找出组织这种方法的最佳方法吗?

在此先感谢,Valentin

linux epoll

9
推荐指数
2
解决办法
6943
查看次数

Windows 2012 R2 closesocket()在侦听套接字上挂起

我在生产服务器上有一个奇怪的情况.

我们有在C++上编写的网络应用程序,它通过使用IOCP编写的TCP为用户提供请求.

两天前,我们更新了Windows 2012 R2(它安装了最新的安全更新.之前的更新是在6个月前).在尝试停止服务的更新后,我们在日志中看到服务器在调用时挂起关闭侦听套接字

closesocket(session->listen_socket);
Run Code Online (Sandbox Code Playgroud)

停止网络系统的模式是下一个:

  1. PostQueuedCompletionStatus(m_completion_port, 0, NULL, NULL); x工作线程数

  2. 等待所有工作线程完成他们的工作

  3. CloseHandle(m_completion_port);

  4. closesocket(session->accept_socket);

    closesocket(session->listen_socket);

这在过去4年中表现良好,但在Windows 2012 R2更新后突然停止服务器永久挂起 closesocket(session->listen_socket);

我已经尝试作为一个解决方案来设置LINGER选项,0超时以使得关闭,但它没有帮助.

所有想法如何解决这个问题或进行任何其他诊断?

c++ sockets windows networking iocp

8
推荐指数
1
解决办法
1224
查看次数

ASP.NET Live活动监视器

我的服务器代码中有很多HTTPHandler.
如何在Live中监控我的Web服务器的性能?
我需要下一个统计信息:
1.每秒请求数(每个处理程序或摘要)
2.CPU使用率

提前致谢

asp.net monitor live

3
推荐指数
1
解决办法
477
查看次数

没有WSAIoctl的AcceptEx

使用AcceptEx直接调用或使用WSAIoctl获取的函数指针有什么区别.

MSDN并未完全涵盖有关性能问题以及使用AcceptEx作为直接调用可能遇到的其他问题的问题.

还有一个问题是:如果我的程序中有4个侦听套接字,我是否需要为每个侦听套接字调用WSAIoctl,当然还要为每个套接字存储函数指针?或者它足以为任何套接字调用一次,而不是与其他套接字一起使用.

预先感谢.

c++ sockets

2
推荐指数
1
解决办法
1303
查看次数

TCP碎片

我知道TCP提供类似流的数据传输,但主要问题是 - 通过TCP发送数据时会出现什么情况?
1.可以将消息拆分为N个块以适合MTU大小.
2.在1次recv调用中可以读取两条消息.

可以有下一个情况吗?
MTU例如1500字节.
客户端调用以1498字节数据发送.
客户端调用以100字节数据发送.
服务器调用recv并接收1500字节数据.
服务器调用recv并接收98字节数据.

因此,当第一个服务器recv中将收到来自第二个客户端发送的2个字节时,它最终会出现这种情况.

我的协议定义为foolows:
4个字节 - 数据长度
数据内容.

我想知道当4个字节(数据长度)被分成2个块时我能想出什么情况吗?

c++ sockets tcp

2
推荐指数
1
解决办法
3032
查看次数

MongoDB集合作为FIFO堆栈

我需要用MongoDB集合实现FIFO逻辑:

  1. 弹出MongoDB集合中的第一个文档.
  2. 将文档推送到MongoDB集合并将其作为最后一个文档.

集合中的文档除了自动生成的_id(ObjectId)之外没有任何索引.

我想知道,是否有可能从集合中找到并删除第一个文档并保证推送和弹出操作将以原子方式执行FIFO堆栈?

我知道可以使用原子推送和弹出操作来处理文档中的数组,但主要问题是如果我将所有数据存储在1个文档的数组中,它的大小将超过16MB(MongoDB允许的最大大小)文献)

在此先感谢,Valentin

stack mongodb mongodb-.net-driver

2
推荐指数
1
解决办法
2714
查看次数