⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 如何写一个稳定,高效的socket服务器程序。 _net技术 - c# - csdn社区 community_csdn_net.htm

📁 主要是我最近两月在公司通过百度学习的内容,有AJAX,DWR,JAVA实现文件的上传和下载.主要目的在与告诉大家一个成功程序员(JAVA)是如何学习的,需要学习什么内容.以及学习的态度.
💻 HTM
📖 第 1 页 / 共 4 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0048)http://topic.csdn.net/t/20030327/22/1586528.html -->
<HTML lang=zh-CN xml:lang="zh-CN" 
xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>如何写一个稳定,高效的socket服务器程序。 .NET技术 / C# - CSDN社区 community.csdn.net</TITLE>
<META content=all name=robots>
<META http-equiv=Content-Language content=zh-CN>
<META http-equiv=Content-Type content="text/html; charset=utf-8"><LINK 
href="如何写一个稳定,高效的socket服务器程序。 _NET技术 - C# - CSDN社区 community_csdn_net.files/topic.css" 
type=text/css rel=stylesheet>
<SCRIPT 
src="如何写一个稳定,高效的socket服务器程序。 _NET技术 - C# - CSDN社区 community_csdn_net.files/Topic.js" 
type=text/javascript></SCRIPT>

<META content=".net c# 线程 端口 应用程序 服务器 连接 执行 socket swait .NET技术 C#" 
name=Keywords>
<META 
content=我写了个多线程socket服务程序,当大批量的数据访问时,发现有不稳定情况。出现很多客户端无法访问的情况,有时仍至整个服务down掉。请csdn高手帮助,提供解决方案,思路,或参考书籍,网站都可以,最好有作个此类程序的人援手。万分感谢。 
name=description>
<META content="MSHTML 6.00.2900.3059" name=GENERATOR></HEAD>
<BODY>
<DIV id=wrapper>
<DIV id=innerWrapper>
<TABLE class=CSDN-PHF id=CSDNPHL cellSpacing=1 cellPadding=0 border=0>
  <TBODY>
  <TR>
    <TD><A href="http://www.csdn.net/" rel=external>CSDN首页</A></TD>
    <TD><A href="http://news.csdn.net/" rel=external>新闻</A></TD>
    <TD><A href="http://bbs.csdn.net/" rel=external><STRONG>论坛</STRONG></A></TD>
    <TD><A href="http://groups.csdn.net/" 
    rel=external><STRONG>小组</STRONG></A></TD>
    <TD><A href="http://blog.csdn.net/" 
    rel=external><STRONG>Blog</STRONG></A></TD>
    <TD><A href="http://dev.csdn.net/" rel=external>文档</A></TD>
    <TD><A href="http://download.csdn.net/" rel=external>下载</A></TD>
    <TD><A href="http://book.csdn.net/" rel=external>读书</A></TD>
    <TD><A href="http://tag.csdn.net/" 
rel=external><STRONG>Tag</STRONG></A></TD>
    <TD><A href="http://wz.csdn.net/" rel=external><STRONG>网摘</STRONG></A></TD>
    <TD><A href="http://search.csdn.net/" 
    rel=external><STRONG>搜索</STRONG></A></TD>
    <TD><A href="http://dotnet.csdn.net/" 
      rel=external><STRONG>.NET</STRONG></A></TD>
    <TD><A href="http://java.csdn.net/" 
    rel=external><STRONG>Java</STRONG></A></TD>
    <TD><A href="http://gamedev.csdn.net/" rel=external>游戏</A></TD>
    <TD><A href="http://live.csdn.net/" rel=external>视频</A></TD>
    <TD><A href="http://job.csdn.net/" rel=external>人才</A></TD>
    <TD><A href="http://prj.csdn.net/" rel=external>外包</A></TD>
    <TD><A href="http://www.dearbook.com.cn/" rel=external>第二书店</A></TD>
    <TD><A href="http://www.programmer.com.cn/" 
  rel=external>程序员</A></TD></TR></TBODY></TABLE>
<DIV id=logo><A href="http://community.csdn.net/" rel=external><IMG class=logo 
alt=CSDN社区 
src="如何写一个稳定,高效的socket服务器程序。 _NET技术 - C# - CSDN社区 community_csdn_net.files/logo_csdn.gif"></A><A 
href="http://book.csdn.net/" rel=external><IMG alt="" 
src="如何写一个稳定,高效的socket服务器程序。 _NET技术 - C# - CSDN社区 community_csdn_net.files/book_468_60.gif"></A><A 
href="http://search.codechina.net/" rel=external><IMG alt="" 
src="如何写一个稳定,高效的socket服务器程序。 _NET技术 - C# - CSDN社区 community_csdn_net.files/codesearch_120_60.gif"></A> 
<IMG style="DISPLAY: none" alt="" 
src="如何写一个稳定,高效的socket服务器程序。 _NET技术 - C# - CSDN社区 community_csdn_net.files/pv.htm"> 
</DIV>
<DIV id=navigation>
<DIV id=search>
<DIV id=innerSearch><INPUT id=key onfocus="value=''"><A 
onclick="return Search()" 
href="http://topic.csdn.net/t/20030327/22/1586528.html#">搜索</A>&nbsp;|&nbsp;<A 
title=功能强大的网络收藏夹,一秒钟操作就可以轻松实现保存带来的价值、分享带来的快乐 
href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(saveit=window.open('http://wz.csdn.net/storeit.aspx?t='+escape(d.title)+'&amp;u='+escape(d.location.href)+'&amp;c='+escape(t),'saveit','scrollbars=no,width=590,height=300,left=75,top=20,status=no,resizable=yes'));saveit.focus();">收藏</A>&nbsp;|&nbsp;<A 
onclick="return Print()" 
href="http://topic.csdn.net/t/20030327/22/1586528.html#">打印</A>&nbsp;|&nbsp;<A 
onclick="return Close()" 
href="http://topic.csdn.net/t/20030327/22/1586528.html#">关闭</A> </DIV></DIV>
<DIV><A class=CSDNRoom href="http://community.csdn.net/" 
rel=external>CSDN社区</A>&nbsp;&gt;&nbsp; <A 
href="http://community.csdn.net/Expert/ForumsList.asp?typenum=1&amp;roomid=52" 
rel=external>.NET技术</A>&nbsp;&gt;&nbsp; <A 
href="http://community.csdn.net/Expert/ForumList.asp?typenum=1&amp;roomid=5201" 
rel=external>C#</A> </DIV></DIV>
<DIV id=mainWrapper>
<DIV id=pageContent>
<DIV id=innerContent>
<H1>如何写一个稳定,高效的socket服务器程序。</H1>
<DIV class=author><A class=anchor name=Top>楼主</A>zkp(zkp)<INPUT class=user1 title="一级用户 该版得分小于等于100分" type=button>2003-03-27 
22:15:06 在 .NET技术 / C# 提问</DIV>
<P>我写了个多线程socket服务程序,当大批量的数据访问时,发现有不稳定情况。出现 &nbsp; <BR>&nbsp; 
很多客户端无法访问的情况,有时仍至整个服务down掉。请csdn高手帮助,提供解决 &nbsp; <BR>&nbsp; 
方案,思路,或参考书籍,网站都可以,最好有作个此类程序的人援手。万分感谢。 <SPAN>问题点数:100、回复次数:31</SPAN><A 
href="http://topic.csdn.net/t/20030327/22/1586528.html#">Top</A> </P>
<DIV class=tagad><IFRAME 
src="如何写一个稳定,高效的socket服务器程序。 _NET技术 - C# - CSDN社区 community_csdn_net.files/Board.htm" 
frameBorder=0 scrolling=no></IFRAME></DIV>
<H3><STRONG><A class=anchor name=r_10499446>1 楼</A>ArLi2003(阿利,MSN:url@163.com)<INPUT class=star2 title="二星用户 该版得分小于等于30000分,大于10000分" type=button></STRONG><SPAN>回复于 
2003-03-28 07:28:36 得分 0 </SPAN></H3>
<P>1,保证该端口没有受到爆洪之类的数据包攻击 &nbsp; <BR>&nbsp; 2,保证无效连接有及时.close &nbsp; <BR>&nbsp; 
3,将客户端 &nbsp; socket &nbsp; 错误号贴上来我试试,或者是连不上该端口? &nbsp; <BR>&nbsp; &nbsp; 
<BR>&nbsp; 我以前写socket &nbsp; 有过不少经验,C# &nbsp; 写还在学习中。。<A 
href="http://topic.csdn.net/t/20030327/22/1586528.html#">Top</A></P>
<H3><STRONG><A class=anchor name=r_10500026>2 楼</A>zwztu(做自己想做的事)<INPUT class=star2 title="二星用户 该版得分小于等于30000分,大于10000分" type=button></STRONG><SPAN>回复于 
2003-03-28 08:28:31 得分 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_10502356>3 楼</A>duebbin(xh)<INPUT class=user5 title="五级用户 该版得分小于等于5000分,大于2000分" type=button></STRONG><SPAN>回复于 
2003-03-28 09:32:16 得分 <EM>10</EM></SPAN></H3>
<P>用完成端口的方法可以承受大规模的连接 &nbsp; <BR>&nbsp; 完成端口 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 
一个完成端口其实就是一个通知队列,由操作系统把已经完成的重叠I/O请求的通知放入其中。当某项I/O操作一旦完成,某个可以对该操作结果进行处理的工作者线程就会收到一则通知。而套接字在被创建后,可以在任何时候与某个完成端口进行关联。 
&nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 
通常情况下,我们会在应用程序中创建一定数量的工作者线程来处理这些通知。线程数量取决于应用程序的特定需要。理想的情况是,线程数量等于处理器的数量,不过这也要求任何线程都不应该执行诸如同步读写、等待事件通知等阻塞型的操作,以免线程阻塞。每个线程都将分到一定的CPU时间,在此期间该线程可以运行,然后另一个线程将分到一个时间片并开始执行。如果某个线程执行了阻塞型的操作,操作系统将剥夺其未使用的剩余时间片并让其它线程开始执行。也就是说,前一个线程没有充分使用其时间片,当发生这样的情况时,应用程序应该准备其它线程来充分利用这些时间片。<A 
href="http://topic.csdn.net/t/20030327/22/1586528.html#">Top</A></P>
<H3><STRONG><A class=anchor name=r_10502744>4 楼</A>ajex(仙桃人在珠海)<INPUT class=star2 title="二星用户 该版得分小于等于30000分,大于10000分" type=button></STRONG><SPAN>回复于 
2003-03-28 09:41:05 得分 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_10504574>5 楼</A>hong98514(David_c#)<INPUT class=user2 title="二级用户 该版得分小于等于500分,大于100分" type=button></STRONG><SPAN>回复于 
2003-03-28 10:23:58 得分 0 </SPAN></H3>
<P>强烈关注 &nbsp; <BR>&nbsp; <A 
href="http://topic.csdn.net/t/20030327/22/1586528.html#">Top</A></P>
<H3><STRONG><A class=anchor name=r_10504904>6 楼</A>engine_(engine)<INPUT class=user3 title="三级用户 该版得分小于等于1000分,大于500分" type=button></STRONG><SPAN>回复于 
2003-03-28 10:30:49 得分 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_10507472>7 楼</A>qimini(循序渐进)<INPUT class=star2 title="二星用户 该版得分小于等于30000分,大于10000分" type=button></STRONG><SPAN>回复于 
2003-03-28 11:24:37 得分 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_10507945>8 楼</A>gujianxin(木头象)<INPUT class=user5 title="五级用户 该版得分小于等于5000分,大于2000分" type=button></STRONG><SPAN>回复于 
2003-03-28 11:34:45 得分 <EM>50</EM></SPAN></H3>
<P>我用异步,感觉还行,贴点垃圾 &nbsp; <BR>&nbsp; 
/////////////////////////////////////////////////// &nbsp; <BR>&nbsp; //#define 
&nbsp; LAN &nbsp; <BR>&nbsp; using &nbsp; System; &nbsp; <BR>&nbsp; using &nbsp; 
System.Net; &nbsp; <BR>&nbsp; using &nbsp; System.Net.Sockets; &nbsp; <BR>&nbsp; 
using &nbsp; System.Text; &nbsp; <BR>&nbsp; using &nbsp; System.IO; &nbsp; 
<BR>&nbsp; &nbsp; <BR>&nbsp; using &nbsp; EII.Base; &nbsp; <BR>&nbsp; &nbsp; 
<BR>&nbsp; namespace &nbsp; EII.Upload &nbsp; <BR>&nbsp; { &nbsp; <BR>&nbsp; 
&nbsp; <BR>&nbsp; /// &nbsp; &lt;summary&gt; &nbsp; <BR>&nbsp; /// &nbsp; 
TUploadServer &nbsp; 的摘要说明。 &nbsp; <BR>&nbsp; /// &nbsp; &lt;/summary&gt; &nbsp; 
<BR>&nbsp; class &nbsp; TUploadServer &nbsp; <BR>&nbsp; { &nbsp; <BR>&nbsp; 
private &nbsp; Socket sWait = null; //wait &nbsp; Socket &nbsp; <BR>&nbsp; 
private &nbsp; EIIByte m_byte = null; &nbsp; <BR>&nbsp; private ASCIIEncoding 
&nbsp; &nbsp; m_ascn &nbsp; ; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; &nbsp; 
<BR>&nbsp; /// &nbsp; &lt;summary&gt; &nbsp; <BR>&nbsp; /// &nbsp; Const &nbsp; 
define &nbsp; <BR>&nbsp; /// &nbsp; &lt;/summary&gt; &nbsp; <BR>&nbsp; private 
&nbsp; const &nbsp; int PORT = 5656; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; private 
&nbsp; const &nbsp; int MAX_CONNECT = 50; &nbsp; <BR>&nbsp; #if LAN &nbsp; 
<BR>&nbsp; private &nbsp; const &nbsp; int &nbsp; ONCE_COUNT &nbsp; = &nbsp; 
1024 &nbsp; * &nbsp; 1024; //once &nbsp; count &nbsp; byte &nbsp; <BR>&nbsp; 
#else &nbsp; <BR>&nbsp; private &nbsp; const &nbsp; int &nbsp; ONCE_COUNT &nbsp; 
= &nbsp; 1024; &nbsp; <BR>&nbsp; #endif &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 
const int OPEN_FILE_FAILED = 2, &nbsp; <BR>&nbsp; FILE_ALWAYS_OPENED = 3, &nbsp; 
<BR>&nbsp; ALL_RIGHT = 1; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; const short 
CMD_C_REQUERY = 0x0301, //客户端发送要求上传命令 &nbsp; <BR>&nbsp; CMD_S_REQUERY = 0x0302, 
//服务器响应 &nbsp; <BR>&nbsp; CMD_C_DETAIL = 0x0303, //客户端发送上传文件内容 &nbsp; <BR>&nbsp; 
CMD_S_DETAIL = 0x0304, //响应 &nbsp; <BR>&nbsp; CMD_S_CHECK = 0x0306; //服务器心跳检测 
&nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; private &nbsp; int &nbsp; nSocketNum =0; 
&nbsp; <BR>&nbsp; private &nbsp; TSocketPacket[] &nbsp; aSock; &nbsp; <BR>&nbsp; 
&nbsp; <BR>&nbsp; private &nbsp; byte[] &nbsp; bSend; &nbsp; <BR>&nbsp; private 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -