我正在寻找一种方法来添加网络仿真到套接字.
基本解决方案是为连接添加带宽限制的某种方式.
对我来说理想的解决方案是:
我看到了一些在系统级别上工作的选项,甚至是代理(Dummynet,WANem,neten等),但这对我不起作用,因为我希望能够手动模拟每个套接字(例如,打开一个带有调制解调器仿真的插座和一个带有3G仿真的插座.基本上我想知道这些工具是如何做到的.
编辑:我需要在我自己的产品中嵌入此功能,因此使用额外的盒子或需要手动配置的第三方工具是不可接受的.我想编写与这些工具完全相同的代码,我的问题是如何做到这一点.
结语:事后来看,我的问题有点误导.显然,没有办法直接在套接字上做我想要的.有两种选择:
添加发送/接收操作的延迟(基于@PaulCoccoli的答案):
通过在发送和接收之前添加延迟,您可以获得非常粗略的网络模拟(延迟,延迟发送的恒定延迟,以及不发送超过X字节每个第二,用于带宽).
保罗的回答和评论对我很有启发,所以我给他奖励.
将网络模拟逻辑添加为代理(基于@ m0she和其他人的回答):
通过代理发送请求,或使用代理拦截请求,然后添加所需的模拟.但是,使用现成的解决方案而不是编写自己的代理实现更有意义 - 从我所看到的Dummynet可能是最好的选择(这就是webpagetest.org所做的).其他选项在下面的答案中,我还将添加DonsProxy
这是更好的方法,所以我接受这个答案.
有没有办法在使用WebSockets(Tyrus)时指定本地IP地址和端口?
我正在寻找与Socket的完整4参数构造函数相同的功能
编辑:
我发现低级Grizzly TCPNIOTransport确实有一个带本地地址的connect()方法,但我不知道如何让Tyrus客户端使用它.
我想构建一个类似于Google-Analytics的网络应用程序,我会在其中收集客户最终用户的统计信息,并根据该数据向客户展示分析.
特点:
由于分析需要,我正在考虑使用OLAP/BI套件,但我不确定它是否适合这种规模.NoSQL数据库?简单的RDBMS会做什么?
我正在尝试从我的插件创建一个新版本,但我无法使其工作.
我试图遵循的一般文件是:https://wiki.jenkins-ci.org/display/JENKINS/Hosting+Plugins
我设法在该页面上得到几乎所有可能的错误消息(连接被拒绝,公钥,未经授权的401)并尝试了很多组合的建议在这里和这里以及整个网络,但到目前为止没有运气.
我在JenkinsCI中有一个用户,也在GitHub中有一个用户,并且在infra中有权限.
您能指出一个导致成功部署的步骤列表吗?请尽可能具体.
我跑之前应该怎么做才能测试呢?我已经运行了mvn release:perpare release:perform并且它导致我的版本号无缘无故地增加了很多次.应该'mvn deploy'也可以吗?(它没有)