首页 新闻 搜索 专区 学院

C# socket与TCPclient的区别

0
悬赏园豆:100 [已解决问题] 解决于 2014-07-12 17:52

最近因为项目接触到客户端网络底层,现在是用TCPClient来做的,看起来代码很少;

但是表现不流畅,怀疑是TCPClient性能或者我们用的不好;

最近想要用socket开线程来做.

大家有什么建议.

我是个C#新手,对C++比较熟悉,一般来说单独一个线程来接收网络消息;一个线程做个生产者-消费者队列来接收消息,并消化掉.

另外是在unity3D下做的,大家有什么好的建议呢?

hailong的主页 hailong | 初学一级 | 园豆:70
提问于:2014-07-10 00:42
< >
分享
最佳答案
1

我怎么觉得你的不流畅是动画效果不流畅啊?

毕加索画的画你却找聂卫平看看哪一笔下笔有问题。

TCPClient和Socket你要不是几十万上百万的连接测试能有多大差别呢?

感觉就是你转语言过来,还没有把相应的接收消息,另一线程处理消息的机制在NET里面实现,

你写网游的数据传输应该不会太多太频繁,问题还是出在接收消息后如何处理上。

收获园豆:20
爱编程的大叔 | 高人七级 |园豆:30664 | 2014-07-10 11:45

跟服务器的ping消息 时延很不稳定

hailong | 园豆:70 (初学一级) | 2014-07-10 12:18

@hailong: 

那是网络问题了,找中国电信吧。或者如果是你的服务器托管,就换个机房吧。

或者如果是你用了云,那就换个云吧。

 

我在同城电信机房,一般PING时延都是10以内,通常是2、3这样。

如果是异地,通常也就是40~50左右。如果是港台,大约都是在150左右,有时候运气好走的通道顺畅就能在50左右,刚刚测试了一把,港澳回大陆的PING居然90%在50,偶尔一两个在120,这就相当理想了。

爱编程的大叔 | 园豆:30664 (高人七级) | 2014-07-10 12:21

@爱编程的大叔: 我说的ping是指的程序内部发echo消息的时延,并不是机子之间的ping

hailong | 园豆:70 (初学一级) | 2014-07-10 13:47
其他回答(7)
0

TCPClient就是对socket的封装吧,会不会是线程问题不流畅的话

收获园豆:20
吴瑞祥 | 园豆:28820 (高人七级) | 2014-07-10 08:36

线程问题 比如呢?

支持(0) 反对(0) hailong | 园豆:70 (初学一级) | 2014-07-10 09:35
1

TCPClient 封装的socket,特点使用起来方便简单,但性能差。如果对性能有要求,应使用socket。

收获园豆:20
lucika.zh | 园豆:59 (初学一级) | 2014-07-10 08:36

性能差?哪方面?

支持(0) 反对(0) hailong | 园豆:70 (初学一级) | 2014-07-10 09:36
0

考虑性能的话用socket吧,就是相对复杂了一点。

收获园豆:20
晓菜鸟 | 园豆:2594 (老鸟四级) | 2014-07-10 08:42
0

要提高客户端性能,你可以有两组方法使用:

1:

TcpClient::BeginConnect

NetworkStream::BeginRead

NetworkStream::BeginWrite

2:

TcpClient::ConnectAsync

NetworkStream::ReadAsync

NetworkStream::WriteAsync

 

然后记得同步对 Read 或 Write 的调用,也就是说每次只有一个线程调用 Read 或 Write 。然后你还可以通过 NoDelay 等属性来自定义发送策略。对同一个地址和端口,保持 TcpClient 的实例最多不超过 2 个,通常一个就足够了。

收获园豆:10
Launcher | 园豆:45045 (高人七级) | 2014-07-10 13:45

unity里只能用第一组函数

支持(0) 反对(0) hailong | 园豆:70 (初学一级) | 2014-07-12 13:10
0

http://www.cnblogs.com/songjingsong/p/3835675.html#2981484 我这边有我自己写的一个类库 你可以下载下来看看,希望有所帮助

收获园豆:10
盒饭编程 | 园豆:212 (菜鸟二级) | 2014-07-11 13:24
0

call ,this is bug!

癡迷 | 园豆:206 (菜鸟二级) | 2014-07-11 17:02

嗯?

支持(0) 反对(0) hailong | 园豆:70 (初学一级) | 2014-07-11 17:03
0

看名字

【秦时明月】 | 园豆:803 (小虾三级) | 2014-07-12 10:31

看名字干嘛?

支持(0) 反对(0) hailong | 园豆:70 (初学一级) | 2014-07-12 13:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册