开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
项目仓库所选许可证以仓库主分支所使用许可证为准
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
im
/
src
/
test
/
java
/
C10kTestClientConcurrent.java
im
/
src
/
test
/
java
/
C10kTestClientConcurrent.java
C10kTestClientConcurrent.java 4.54 KB
一键复制 编辑 原始数据 按行查看 历史
githubsync 提交于 2023年11月14日 12:00 +08:00 . [framework] TCP Port numbers reused
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;
import java.nio.charset.StandardCharsets;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
/**
* javac -encoding UTF-8 C10kTestClientConcurrent.java
*
* https://mp.weixin.qq.com/s/VdyXDBevE48Wtr95ug_aKw
*
* 代码比较简单,直接使用BIO串行创建30000个连接。
*/
public class C10kTestClientConcurrent {
// static String ip = "192.168.110.35";
static String ip = "";
private static int port = 666;
public static void main(String[] args) throws IOException {
performanceTest();
// httpAsyncTest();
}
private static void performanceTest() throws IOException {
ExecutorService executorService = Executors.newFixedThreadPool(16);
Queue<SocketChannel> clients = new ConcurrentLinkedQueue<SocketChannel>();
new Thread(new Runnable() {
@Override
public void run() {
/**
* 每秒发一次心跳
*/
while (true){
try {
long start = System.currentTimeMillis();
for (SocketChannel client : clients) {
// client.write(ByteBuffer.wrap(("1"+EchoConstant.SEPARATOR).getBytes(StandardCharsets.UTF_8)));
client.write(ByteBuffer.wrap(("biz json data$").getBytes(StandardCharsets.UTF_8)));
}
System.out.println("span millis time: [{}]" + (System.currentTimeMillis() - start));
// TimeUnit.SECONDS.sleep(1);
TimeUnit.MILLISECONDS.sleep(1000);
System.out.println("heart Beat " + clients.size());
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
},"heartBeat").start();
InetSocketAddress serverAddr = new InetSocketAddress(ip, port);
String str = "Hello, World!";
// 字符串到 ByteBuffer 的转换
ByteBuffer byteBuffer = ByteBuffer.wrap(str.getBytes(StandardCharsets.UTF_8));
// IntStream.range(20000, 50000).forEach(i -> {
AtomicInteger count = new AtomicInteger();
// IntStream.range(20000, 20200).forEach(i -> {
long start = System.currentTimeMillis();
// for (int i = 20000; i < 30000; i++) {
for (int i = 20000; i < 25000; i++) {
// for (int i = 20000; i < 21000; i++) {
executorService.submit(new Runnable() {
@Override
public void run() {
try {
SocketChannel client = SocketChannel.open();
// client.bind(new InetSocketAddress(ip, i));
long startRope = System.currentTimeMillis();
client.connect(serverAddr);
long endRope = System.currentTimeMillis() - startRope;
System.out.println(endRope);
//内容为客户端的时间
Integer devid = count.incrementAndGet();
String uploadMsg = getConnectMsg(devid);
client.write(ByteBuffer.wrap(uploadMsg.getBytes(StandardCharsets.UTF_8)));
System.out.println("client:" + count.get() + " connected " + devid);
clients.add(client);
// TimeUnit.MILLISECONDS.sleep(2);
} catch (Exception e) {
System.out.println("IOException" + count.get());
e.printStackTrace();
}
}
});
}
long x = System.currentTimeMillis() - start;
System.out.println(x/1000);
System.out.println("clients.size: " + clients.size());
//阻塞主线程
System.in.read();
}
private static String getConnectMsg(Integer devid) {
/*Message message = new Message();
message.setIsFirstConnect("1");
message.setDevid(devid + "");
message.setIemi("1111111111v004");
message.setMode(0);
return message.toJSON() + "$";*/
return "1$";
}
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

极客时间-IM课程代码
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/githubsync/im.git
git@gitee.com:githubsync/im.git
githubsync
im
im
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /