描述
服务端使用完成端口,功能是接收客户端发来的字符串,然后把这个字符串回送给客户端,希望能支持 2-5k个并发数测试要求
客户端分别使用阻塞+多线程 和 完成端口 模拟多个连接
客户端要指定发包的间隔时间,统计每个连接的平均收包时间(就是发包完成后,记录收到包所花的时间;在本机测试,通常只有千分之几秒甚至更少)
进展
现在我在 阻塞+多线程 方式下(只开了200个线程进行测试,模拟200个连接),可以容易的控制每个socket的发包间隔时间和计算收包时间;但在 单线程+完成端口 方式下,没办法做到这两点我遇到的困难
如果客户端使用完成端口,就是用一个线程来管理多个socket,可我需要对每个socket进行 sleep(表示发包的间隔时间),还需要记录每个socket的收包时间。我不能完全控制好每个socket,因为一旦sleep,所有的socket都要阻塞;计算收包时间也非常困难,毕竟只有一个线程;
请求大家解答的问题
是不是只能用阻塞+多线程来编写客户端,模拟多个连接?
如果采用单线程的完成端口,就没办法达到测试要求了吗?
谢谢大家,祝各位同学身体健康
服务端使用完成端口,功能是接收客户端发来的字符串,然后把这个字符串回送给客户端,希望能支持 2-5k个并发数测试要求
客户端分别使用阻塞+多线程 和 完成端口 模拟多个连接
客户端要指定发包的间隔时间,统计每个连接的平均收包时间(就是发包完成后,记录收到包所花的时间;在本机测试,通常只有千分之几秒甚至更少)
进展
现在我在 阻塞+多线程 方式下(只开了200个线程进行测试,模拟200个连接),可以容易的控制每个socket的发包间隔时间和计算收包时间;但在 单线程+完成端口 方式下,没办法做到这两点我遇到的困难
如果客户端使用完成端口,就是用一个线程来管理多个socket,可我需要对每个socket进行 sleep(表示发包的间隔时间),还需要记录每个socket的收包时间。我不能完全控制好每个socket,因为一旦sleep,所有的socket都要阻塞;计算收包时间也非常困难,毕竟只有一个线程;
请求大家解答的问题
是不是只能用阻塞+多线程来编写客户端,模拟多个连接?
如果采用单线程的完成端口,就没办法达到测试要求了吗?
谢谢大家,祝各位同学身体健康
阻塞+多线程 更好控制
200个很轻松的,就是2000个也很轻松啊
当线程数量达到百以上等级的时候
建议你换模型,否则资源消耗太大了
PS: N久以前我也用过多线程写这样的程序,后来被我放弃了