Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
老鱼er
et
提交
40e4d0d7
E
et
项目概览
老鱼er
/
et
与 Fork 源项目一致
从无法访问的项目Fork
通知
10
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
et
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
40e4d0d7
编写于
3月 25, 2014
作者:
T
tanghai
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
NetworkStream 测试,性能很强, 10W个封包来回只需要3秒
我用linux c++差不多也就每秒4W多的封包
上级
2f92bd96
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
19 addition
and
13 deletion
+19
-13
CSharp/Platform/TNet/TcpAcceptor.cs
CSharp/Platform/TNet/TcpAcceptor.cs
+4
-4
CSharp/Platform/TNetTest/TcpAcceptorTest.cs
CSharp/Platform/TNetTest/TcpAcceptorTest.cs
+15
-9
未找到文件。
CSharp/Platform/TNet/TcpAcceptor.cs
浏览文件 @
40e4d0d7
...
...
@@ -10,11 +10,11 @@ namespace TNet
private
readonly
Socket
socket
;
private
readonly
SocketAsyncEventArgs
asyncEventArgs
=
new
SocketAsyncEventArgs
();
public
TcpAcceptor
(
ushort
port
,
int
backLog
=
100
)
public
TcpAcceptor
(
string
ip
,
ushort
port
,
int
backLog
=
100
)
{
this
.
socket
=
new
Socket
(
AddressFamily
.
InterNetwork
,
SocketType
.
Stream
,
ProtocolType
.
Tcp
);
this
.
asyncEventArgs
.
Completed
+=
OnArgsCompletion
;
this
.
socket
.
Bind
(
new
IPEndPoint
(
IPAddress
.
Parse
(
"127.0.0.1"
),
port
));
this
.
asyncEventArgs
.
Completed
+=
OnArgsCompletion
;
this
.
socket
.
Bind
(
new
IPEndPoint
(
IPAddress
.
Parse
(
ip
),
port
));
this
.
socket
.
Listen
(
backLog
);
}
...
...
@@ -55,7 +55,7 @@ namespace TNet
return
tcs
.
Task
;
}
private
void
OnArgsCompletion
(
object
sender
,
SocketAsyncEventArgs
e
)
private
static
void
OnArgsCompletion
(
object
sender
,
SocketAsyncEventArgs
e
)
{
var
tcs
=
(
TaskCompletionSource
<
NetworkStream
>)
e
.
UserToken
;
...
...
CSharp/Platform/TNetTest/TcpAcceptorTest.cs
浏览文件 @
40e4d0d7
...
...
@@ -14,7 +14,7 @@ namespace TNetTest
{
private
const
ushort
port
=
11111
;
private
int
count
;
private
readonly
Barrier
barrier
=
new
Barrier
(
100
);
private
readonly
Barrier
barrier
=
new
Barrier
(
2
);
private
readonly
object
lockObject
=
new
object
();
[
TestMethod
]
...
...
@@ -25,7 +25,7 @@ namespace TNetTest
Thread
.
Sleep
(
2
);
for
(
int
i
=
0
;
i
<
99
;
++
i
)
for
(
int
i
=
0
;
i
<
1
;
++
i
)
{
var
thread
=
new
Thread
(
this
.
Client
);
thread
.
Start
();
...
...
@@ -43,9 +43,12 @@ namespace TNetTest
try
{
var
bytes
=
"tanghai"
.
ToByteArray
();
await
ns
.
WriteAsync
(
bytes
,
0
,
bytes
.
Length
);
int
n
=
await
ns
.
ReadAsync
(
bytes
,
0
,
bytes
.
Length
);
Assert
.
AreEqual
(
7
,
n
);
for
(
int
i
=
0
;
i
<
100000
;
++
i
)
{
await
ns
.
WriteAsync
(
bytes
,
0
,
bytes
.
Length
);
int
n
=
await
ns
.
ReadAsync
(
bytes
,
0
,
bytes
.
Length
);
Assert
.
AreEqual
(
7
,
n
);
}
}
catch
(
Exception
e
)
{
...
...
@@ -58,9 +61,9 @@ namespace TNetTest
private
async
void
Server
()
{
using
(
var
tcpAcceptor
=
new
TcpAcceptor
(
port
))
using
(
var
tcpAcceptor
=
new
TcpAcceptor
(
"127.0.0.1"
,
port
))
{
while
(
count
!=
99
)
while
(
count
!=
1
)
{
NetworkStream
ns
=
await
tcpAcceptor
.
AcceptAsync
();
// 这里可能已经不在Server函数线程了
...
...
@@ -74,8 +77,11 @@ namespace TNetTest
try
{
var
bytes
=
new
byte
[
1000
];
int
n
=
await
ns
.
ReadAsync
(
bytes
,
0
,
100
);
await
ns
.
WriteAsync
(
bytes
,
0
,
n
);
for
(
int
i
=
0
;
i
<
100000
;
++
i
)
{
int
n
=
await
ns
.
ReadAsync
(
bytes
,
0
,
100
);
await
ns
.
WriteAsync
(
bytes
,
0
,
n
);
}
lock
(
lockObject
)
{
++
count
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录