问题描述:
我现在已经建立好一个TCP Socket连接。对接收数据的处理有两种方案:
第一种,对Socket进行网络流串接,也就是用NetWorkStream类封装一下已连接的Socket,即前生一个NetWorkStream实例,然后用流统一的Read(或异步方式BeignRead)读取数据。
第二种,直接接调用已连接的Socket对象接收数据。
提问:这两种方式有没有效率上的差异?
如果要对接收到的字节数据组进行处理,也有两种方式常见方式。
第一种:MemeoryStrem ms=new MemeoryStream(接收数据的字节数组名....);BinaryStream binr=new BinaryStream(ms),然后用binr来读取。
第二种:就是把第一种中的MemeoryStream换成BufferdStream,其它不变。
提问:这两种处理方式,有没有效率差异,或有没有效率更好的办法?
BufferdStream比较省事。你需要编写的代码很少。
第一种编写比较复杂。
需要提醒你的是你的客户端和服务器端最好用同一种。否则内容超过1M容易丢包(我也不知道为什么,可能我的水平太烂)。
我以前写过一个传输文件的,你要参考可以发邮件给我。
另外效率都不高,通过流量统计我发现,我用了5G的流量传输了一个3.5G的文件。。。
后来测试了LEAP FTP的客户端对ServU的服务器端,发现也差不多。
1. 仅从读写的速度来看,要看这2个类调用的API是哪个?用内核API读取文件的快。
2. 通信系统中,应用协议的好坏是决定效率的重要因素。参考:http://www.cnblogs.com/wildman/archive/2009/07/06/1517629.html
我以前写过一篇,你看看对你有没有用
http://www.cnblogs.com/eaglet/archive/2009/11/04/1595887.html