社区
C#
帖子详情
高手现身,帮帮小弟!!
dixieyouming
2009-05-04 06:31:53
请求来个C#编的 限制带宽,流量控制和流量检测的程序???谢谢先!!!
...全文
182
15
打赏
收藏
高手现身,帮帮小弟!!
请求来个C#编的 限制带宽,流量控制和流量检测的程序???谢谢先!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
热学沸腾56
2009-05-06
打赏
举报
回复
up,mark
xianglin_mail
2009-05-06
打赏
举报
回复
P2P终结者就可以
wuyq11
2009-05-06
打赏
举报
回复
参考
参考
cnming
2009-05-05
打赏
举报
回复
可能性不大
zzxap
2009-05-05
打赏
举报
回复
流量控制是C++的强项
zzxap
2009-05-05
打赏
举报
回复
http://www.diybl.com/course/3_program/c++/cppjs/2008331/107798.html
zzxap
2009-05-05
打赏
举报
回复
[CODE=C#]
public static byte[] byteAdd(byte[] bt1,byte[] bt2)
104 {
105 if(bt1==null)
106 {
107 return bt2;
108 }
109 if(bt2==null)
110 {
111 return bt1;
112 }
113
114 long len1=bt1.Length;
115 long len2=bt2.Length;
116
117 byte[] result=new byte[len1+len2];
118 bt1.CopyTo(result,0);
119
120 for(long i=0;i<len2;i++)
121 {
122 result[len1+i]=bt2[i];
123 }
124 return result;
125 }
126
127 public static byte[] byteCopy(byte[] source,long index,long len)
128 {
129 byte[] dest;
130 if(index<0)
131 {
132 return null;
133 }
134 long sLen=source.Length;
135 if(sLen<index+len)
136 {
137 dest=new byte[sLen-index];
138 }
139 else
140 {
141 dest=new byte[len];
142 }
143 long i=0;
144 for(;i<dest.Length;i++)
145 {
146 dest[i]=source[index+i];
147 }
148 return dest;
149 }
150
151 public long getSliceIndex()
152 {
153 return this.sliceIndex;
154 }
155
156 public long getSliceId()
157 {
158 return this.sliceId;
159 }
160
161 public bool isEndSlice()
162 {
163 return this.sliceEnd;
164 }
165
166 public byte[] getSliceContent()
167 {
168 return this.sliceContent;
169 }
170
171 /*
172 [STAThread]
173 static void Main(string[] args)
174 {
175 System.Collections.Hashtable hashtable=new Hashtable();
176
177 string a="--0123456789我-的-地-盘-我-作-猪--";
178 //byte[] b=ASCIIEncoding.UTF8.GetBytes(a);
179 Hashtable ms=MsgSlice.splitMsg(a);
180 byte[] b=MsgSlice.uniteMsg(ms);
181 Console.WriteLine(System.Text.ASCIIEncoding.UTF8.GetString(b)+a.Length+"=="+b.Length);
182 Console.ReadLine();
183 }
184 */
185 }
186 }
187
[/CODE]
zzxap
2009-05-05
打赏
举报
回复
[code=C#]
为解决UDP传输中的可靠性和流量控制,参照TCP协议里面的滑动窗口协议写了一个流量控制的东东。还不完善,而且传输速度也不理想(单线程时外网速度才100多K/秒)。
2
3 接收端目前还没做窗口控制,因为感觉接收端做不做都无所谓。。^_^
4
5 using System;
6 using System.Text;
7 using System.Collections;
8
9 namespace scutnetTalkClient
10 {
11 /// <summary>
12 /// 消息分片类,用于对消息进行封包、解包。对每个数据拆分为定长(最后一个可能小于定长)的数据段,并存在一个以序列编号为key的Hashtable中。
13 /// 主要用于对较大的图片信息进行拆包、封包
14 /// </summary>
15
16 [System.Serializable]
17 public class MsgSlice
18 {
19 public static long SLICE_MAX_LENGTH=1100;//数据片最大长度
20 private long sliceId;//片唯一编号
21 private bool sliceEnd=false;//是否最后一片
22 private long sliceIndex=0;//片在整个消息中的索引
23 private byte[] sliceContent;//片内容
24 public bool isSimple=false;
25
26 public MsgSlice()
27 {
28 }
29
30 public MsgSlice(byte[] msg,bool isEnd,long id,long index)
31 {
32 if(msg==null||msg.Length==0)
33 {
34 return;
35 }
36 this.sliceEnd=isEnd;
37 this.sliceContent=msg;
38 this.sliceId=id;
39 this.sliceIndex=index;
40 }
41
42 //对二进制数据进行分片,并返回分片的Hashtable
43 public static Hashtable splitMsg(byte[] msg)
44 {
45 if(msg==null||msg.Length==0)
46 {
47 return null;
48 }
49 long len=msg.Length;
50 if(len<=MsgSlice.SLICE_MAX_LENGTH)
51 {
52 Hashtable h=new Hashtable();
53 h.Add((long)0,new MsgSlice(msg,true,1,(long)0));
54 return h;
55 }
56 long sliceNum=1;
57 if(len%MsgSlice.SLICE_MAX_LENGTH==0)
58 {
59 sliceNum=len/MsgSlice.SLICE_MAX_LENGTH;
60 }
61 else
62 {
63 sliceNum=len/MsgSlice.SLICE_MAX_LENGTH+1;
64 }
65 Hashtable ms=new Hashtable();
66 long id=1;
67 long i=0;
68 for(;i<sliceNum-1;i++)
69 {
70 byte[] tByte=MsgSlice.byteCopy(msg,i*MsgSlice.SLICE_MAX_LENGTH,MsgSlice.SLICE_MAX_LENGTH);
71 ms.Add(i,new MsgSlice(tByte,false,id,i));
72 }
73 byte[] teByte=MsgSlice.byteCopy(msg,i*MsgSlice.SLICE_MAX_LENGTH,MsgSlice.SLICE_MAX_LENGTH);
74 ms.Add(i,new MsgSlice(teByte,true,id,i));
75 return ms;
76 }
77
78 //对字符串进行分片(重载),并返回分片Hashtable
79 public static Hashtable splitMsg(string msg)
80 {
81 return MsgSlice.splitMsg(System.Text.ASCIIEncoding.UTF8.GetBytes(msg));
82 }
83
84 //对分片数据进行重组
85 public static byte[] uniteMsg(Hashtable h)
86 {
87 byte[] result=null;
88 for(int i=0;i<h.Count;i++)
89 {
90 if(h[(long)i]!=null)
91 {
92 result=MsgSlice.byteAdd(result,((MsgSlice)h[(long)i]).sliceContent);
93 Console.WriteLine("加入数据"+i);
94 }
95 else
96 {
97 Console.WriteLine("忽略空数据"+i);
98 }
99 }
100 return result;
101 }
102
[/CODE]
zzxap
2009-05-05
打赏
举报
回复
在网关(Windows NT以上,UNIX,Linux)或路由器使用SNMP达到效果
2、在本机(Windows NT以上)使用WMI或者SNMP达到效果
benyouyong
2009-05-04
打赏
举报
回复
20分
niitnanfeng
2009-05-04
打赏
举报
回复
up
深海之蓝
2009-05-04
打赏
举报
回复
P2P终结者就可以
自己弄 很麻烦,几乎不可能
pricks
2009-05-04
打赏
举报
回复
友情帮顶!
编程世界中的技术实在是多如牛毛!
不过百度和谷歌上的资源则多如牛虱,遇到问题先上网找,基本上不会有找不到答案的。
尤其是C#这种语言,网络上的资源更是铺天盖地!
genius_tong
2009-05-04
打赏
举报
回复
mark~
llsen
2009-05-04
打赏
举报
回复
,,,
Re: 一著名软件公司的java笔试算法题!
主 题: Re: 一著名软件公司的java笔试算法题!
基础
各位兄弟,在SDK编程中如果实现窗口分割呢?请问怎么得到一个函数的执行时间,单位毫秒!如何调试asp组件呀。用vc++调试编制的组件怎样画一个箭头?高分请教如何限制程序运行的方法?求助:通过编程DirectX抓屏------>masterz:再麻烦你一下,谢谢熟悉RichEdit的朋友过来看一下,RichEdit的几个问题.如何对 I/O 端口进行操作?有了该问题就有了思考(100分 献礼!)如何
让子弹飞一会
《让子弹飞一会儿》 电影剧本 北洋年间 南部中国 !.日 外 青石岭 青山白石。 雄关漫道。 苍鹰翱翔天际。 铁轨直插远方。 一颗后脑勺由画面上方落下,耳朵紧贴轨道,听。 须臾,头颅轻起,让出缝隙,手指插入耳孔,挖净。再听。铁轨抖动,隆隆声由远而近。 呜-一-汽笛长嘶。 脑袋一翻,后脑勺变成正脸。 大眼惊恐。火车从这边来了! 铁轮飞转,白烟滚滚,血旗猎猎,风驰电掣。白马十匹,赫然出现。率两节车厢呼啸而来。马拉火车。十匹白马是火车的车头。 白马黑车,游龙山间。日 内 火车车厢 车厢内,火锅巨大,如八仙圆
第六章 招兵买马
第六章 招兵买马 寇仲在桂锡良和幸容诚惶诚恐的等待下,沉吟道:“锡良你和邵令周的女儿有否正式拜 堂成亲?” 桂锡良有点尴尬地嗫嚅道:“只是定下亲事,嘿!你不要多心,邵军师说待我练成他...
第二章 齐王回京
第二章 齐王回京 陪李建成来的是薛万彻和冯立本,三人借东厢跟寇仲密话。沙家的人均不在被邀之列。 寇仲对薛万彻这个人特别顾忌,皆因看穿他无论才智、武功,在李建成的太子系集团 中,均属上...
C#
111,126
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章