📄 如何写一个稳定,高效的socket服务器程序。 _net技术 - c# - csdn社区 community_csdn_net.htm
字号:
但无法解决的问题还有,服务断内存一直上涨,无法释放,我用一线程定时GC.Collect(),但 <BR> 不是很管用。<A
href="http://topic.csdn.net/t/20030327/22/1586528.html#">Top</A></P>
<H3><STRONG><A class=anchor name=r_10762721>23 楼</A>zkp(zkp)<INPUT class=user1 title="一级用户 该版得分小于等于100分" type=button></STRONG><SPAN>回复于
2003-04-06 23:22:17 得分 0 </SPAN></H3>
<P>to turui: <BR> ==== <BR>
服务程序应该尽量少的开辟线程,通讯用异步来完成。 <BR>
服务程序应该尽量少的,开辟释放内存,事先开辟好足够的内存自己做内存管理(可以参看unix的内存管理) <BR> ====
<BR> 请问为什么要少的开辟线程,我的服务端需要大量的访问(实时),不用线程能行吗? <BR>
c#如何控制内存,unix不太懂。请dx指教指教。 <BR> <BR> 另:多谢大家的热情帮助!!!!!<A
href="http://topic.csdn.net/t/20030327/22/1586528.html#">Top</A></P>
<H3><STRONG><A class=anchor name=r_10762890>24 楼</A>zzhuz(大件)<INPUT class=star1 title="一星用户 该版得分小于等于10000分,大于5000分" type=button></STRONG><SPAN>回复于
2003-04-06 23:46:42 得分 0 </SPAN></H3>
<P>gz<A href="http://topic.csdn.net/t/20030327/22/1586528.html#">Top</A></P>
<H3><STRONG><A class=anchor name=r_10763993>25 楼</A>Ruosi(若思)<INPUT class=user1 title="一级用户 该版得分小于等于100分" type=button></STRONG><SPAN>回复于
2003-04-07 07:55:32 得分 0 </SPAN></H3>
<P>用TcpListener作服务器段监听对象时,如何判断连接是否有效? <BR> <BR> <A
href="http://topic.csdn.net/t/20030327/22/1586528.html#">Top</A></P>
<H3><STRONG><A class=anchor name=r_10767771>26 楼</A>zkp(zkp)<INPUT class=user1 title="一级用户 该版得分小于等于100分" type=button></STRONG><SPAN>回复于
2003-04-07 10:14:54 得分 0 </SPAN></H3>
<P>向客户断发送消息,如果连接无效会报错,根据错误判断连接是否有效。<A
href="http://topic.csdn.net/t/20030327/22/1586528.html#">Top</A></P>
<H3><STRONG><A class=anchor name=r_10768120>27 楼</A>engine_(engine)<INPUT class=user3 title="三级用户 该版得分小于等于1000分,大于500分" type=button></STRONG><SPAN>回复于
2003-04-07 10:23:14 得分 0 </SPAN></H3>
<P>up<A href="http://topic.csdn.net/t/20030327/22/1586528.html#">Top</A></P>
<H3><STRONG><A class=anchor name=r_10813126>28 楼</A>pdsinfo(新手)<INPUT class=user3 title="三级用户 该版得分小于等于1000分,大于500分" type=button></STRONG><SPAN>回复于
2003-04-08 16:53:19 得分 <EM>20</EM></SPAN></H3>
<P>我也问了turui,这是turui给我的回答: <BR> //turui真是个热心的人!3k him!
<BR> <BR> C#我用的时间也不长,以前写的服务程序是用纯c++写的
<BR> 多线程非常消耗系统资源,系统光调度这些线程就已经很辛苦了 <BR>
用线程来避免阻塞是一种好的方式,简单的方式,但是效率最差的方式 <BR>
win封装好的异步socket可以很好的避免阻塞,效率也相对更好 <BR>
(我们以前写的服务程序,一台机器8000-12000用户在线,算上主程序一共也只用了6个线程,主线程一个,时间扫描一个,其他的4个,通讯上几乎没用线程)
<BR>
另外关于内存管理,经过实践发现,系统的开辟释放内存也非常消耗系统资源,我们预先开辟好足够的内存,他们之间用套机制管理起来,以后当我们要用到内存的时候,我们不再
new,而是我们自己内存管理的new方法,当然也会有相应的 释放方法,只是我们的释放是把不用的内存再从新返回到以开辟好的内存链表中。
<BR> 另一些常用的细节我在回复中也说明白了。你自己多想想把,写一个好的服务程序不是一下能写完的。<A
href="http://topic.csdn.net/t/20030327/22/1586528.html#">Top</A></P>
<H3><STRONG><A class=anchor name=r_10852011>29 楼</A>shmily_nnx(阿鳖)<INPUT class=user1 title="一级用户 该版得分小于等于100分" type=button></STRONG><SPAN>回复于
2003-04-09 22:17:51 得分 0 </SPAN></H3>
<P>C#里异步Socket的AcceptRequest给出每一个Socket是不是使用不同的端口?还是都使用同一个默认端口<A
href="http://topic.csdn.net/t/20030327/22/1586528.html#">Top</A></P>
<H3><STRONG><A class=anchor name=r_10852711>30 楼</A>mamu()<INPUT class=user1 title="一级用户 该版得分小于等于100分" type=button></STRONG><SPAN>回复于
2003-04-09 22:46:57 得分 0 </SPAN></H3>
<P>mark<A href="http://topic.csdn.net/t/20030327/22/1586528.html#">Top</A></P>
<H3><STRONG><A class=anchor name=r_10854256>31 楼</A>zkp(zkp)<INPUT class=user1 title="一级用户 该版得分小于等于100分" type=button></STRONG><SPAN>回复于
2003-04-10 00:52:18 得分 0 </SPAN></H3>
<P>再次多谢大家的热心帮助,我会写一个异步的server实现,与多线程比较。其实我的程序要求 <BR>
最主要的是:一、稳定性,需要内存控制要好,但及其内存较大(2-4G)。二、效率,除了小部分查询外,大部分是适时的操作,某个大的查询运行时,同时进行的事务操作必须不能等待。
<BR> <BR> 其实这个问题到这应该结束了,但我觉得这是网络编程的一个难点,应该有一个更深入透彻的
<BR> 方案。希望对这个问题感兴趣的朋友再进一步研究,最终给大家公布一个满意的结果。 <BR>
<BR> 有兴趣的请msn联系:myzkp@hotmail.com,共同关注。 <BR> <A
href="http://topic.csdn.net/t/20030327/22/1586528.html#">Top</A></P>
<H4><STRONG>相关问题</STRONG></H4>
<DIV class=relation>
<UL>
<LI><A href="http://topic.csdn.net/t/20050304/13/3824451.html"
rel=external>急!急!急!急!关于socket服务器端程序问题。</A>
<LI><A href="http://topic.csdn.net/t/20050628/09/4109092.html"
rel=external>关于传送SOCKET句柄,服务器端程序</A>
<LI><A href="http://topic.csdn.net/t/20051208/00/4444978.html"
rel=external>关于win socket编程 客户程序 服务器程序 帮我改一下</A>
<LI><A href="http://topic.csdn.net/t/20010620/09/164887.html"
rel=external>我想编写一个服务器程序接受客户端的查询,是否要用到端口?是否用socket就可以了?有什么可以提高效率的方法呢?请各位不吝赐教</A>
<LI><A href="http://topic.csdn.net/t/20021003/14/1070594.html"
rel=external>送掉500分,哪位给看看咱的socket程序,一个http服务器</A>
<LI><A href="http://topic.csdn.net/t/20050801/13/4181127.html"
rel=external>socket程序 在服务器端怎样能知道客户端异常断开?</A>
<LI><A href="http://topic.csdn.net/t/20051203/14/4435719.html"
rel=external>JSP/servlet 和 C程序的服务器 之间能够进行socket通讯吗??</A>
<LI><A href="http://topic.csdn.net/t/20020604/17/777950.html"
rel=external>服务器方程序用socket api编写,客户方的程序能否用csocket类来编写,请指教!!</A>
<LI><A href="http://topic.csdn.net/t/20050819/08/4217768.html"
rel=external>如何制作托盘程序?socket程序服务器端在关闭窗口后,进程仍然存在?</A>
</LI></UL></DIV></DIV></DIV>
<DIV id=sidebar>
<H3>关键词</H3>
<DIV>
<UL>
<LI><A href="http://tag.csdn.net/tag/.net/" rel=external>.net</A>
<LI><A href="http://tag.csdn.net/tag/c#/" rel=external>c#</A>
<LI><A href="http://tag.csdn.net/tag/线程/" rel=external>线程</A>
<LI><A href="http://tag.csdn.net/tag/端口/" rel=external>端口</A>
<LI><A href="http://tag.csdn.net/tag/应用程序/" rel=external>应用程序</A>
<LI><A href="http://tag.csdn.net/tag/服务器/" rel=external>服务器</A>
<LI><A href="http://tag.csdn.net/tag/连接/" rel=external>连接</A>
<LI><A href="http://tag.csdn.net/tag/执行/" rel=external>执行</A>
<LI><A href="http://tag.csdn.net/tag/socket/" rel=external>socket</A>
<LI><A href="http://tag.csdn.net/tag/swait/" rel=external>swait</A>
</LI></UL></DIV>
<H3>得分解答快速导航</H3>
<DIV>
<UL>
<LI>帖主:<A href="http://topic.csdn.net/t/20030327/22/1586528.html#Top">zkp</A>
<LI><A
href="http://topic.csdn.net/t/20030327/22/1586528.html#r_10502356">duebbin</A>
<LI><A
href="http://topic.csdn.net/t/20030327/22/1586528.html#r_10507945">gujianxin</A>
<LI><A
href="http://topic.csdn.net/t/20030327/22/1586528.html#r_10613014">turui</A>
<LI><A
href="http://topic.csdn.net/t/20030327/22/1586528.html#r_10813126">pdsinfo</A>
</LI></UL></DIV>
<H3>相关链接</H3>
<DIV>
<UL>
<LI><A href="http://dotnet.csdn.net/" target=_blank>CSDN .NET频道</A>
<LI><A
href="http://www.dearbook.com.cn/Book/SearchBook.aspx?sortid=6&sorttype=smallsort"
target=_blank>.NET类图书</A>
<LI><A
href="http://www.dearbook.com.cn/Book/SearchBook.aspx?sortid=10&sorttype=smallsort"
target=_blank>C#类图书</A>
<LI><A href="http://www.codechina.net/resource/sort.php/243"
target=_blank>.NET类源码下载</A> </LI></UL></DIV>
<H3>广告也精彩</H3>
<DIV>
<SCRIPT
src="如何写一个稳定,高效的socket服务器程序。 _NET技术 - C# - CSDN社区 community_csdn_net.files/show_ads.js"
type=text/javascript></SCRIPT>
</DIV>
<H3>反馈</H3>
<DIV>请通过下述方式给我们反馈<BR><IMG alt=反馈
src="如何写一个稳定,高效的socket服务器程序。 _NET技术 - C# - CSDN社区 community_csdn_net.files/feedback.gif"></DIV></DIV>
<DIV class=clear></DIV></DIV>
<DIV class=CSDN-PHF id=CSDNPF>
<HR>
<A class=biaoshi
href="http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001032100010"
rel=external> </A>
<DIV><A href="http://www.csdn.net/intro/intro.asp?id=2" rel=external>网站简介</A>-<A
href="http://www.csdn.net/intro/intro.asp?id=5" rel=external>广告服务</A>-<A
href="http://www.csdn.net/map/map.shtm" rel=external>网站地图</A>-<A
href="http://www.csdn.net/help/help.asp" rel=external>帮助</A>-<A
href="http://www.csdn.net/intro/intro.asp?id=9" rel=external>联系方式</A>-<A
href="http://job.csdn.net/Jobs/f9c75c9f2ad14404a604669b757b9ed0/viewcompany.aspx"
rel=external>诚聘英才</A>-<A href="http://www.csdn.net/english/"
rel=external>English</A>-<A
href="javascript:navigate('mai'%20+%20'lto:'%20+%20'webm'%20+%20'aster@c'%20+%20'sdn.n'+'et?subject=向CSDN报告问题')"
rel=external>问题报告</A></DIV>
<DIV>北京百联美达美数码科技有限公司 版权所有 京 ICP 证 020026 号</DIV>
<DIV>Copyright © 2000-2006, CSDN.NET, All Rights Reserved</DIV>
<SCRIPT
src="如何写一个稳定,高效的socket服务器程序。 _NET技术 - C# - CSDN社区 community_csdn_net.files/counter.js"
type=text/javascript></SCRIPT>
<HR>
</DIV></DIV></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -