急,updclient客户端/服务器通讯的性能问题,请各位专家帮忙

amendajing 2008-11-24 07:56:15
最近由于项目的原因,用udpclient开发了个客户端/服务器端通讯工具(类似qq)
现在碰到了性能问题,客户端少的时候登陆很快,消息转发也很快.当客户端人数达到80人左右时,登陆服务器的响应就会特别慢!有时候压根就不反映.(截了包看了一下,客户端发过去了,是服务器的响应变得很慢,有时候就没响应,感觉处理不过来了....)
服务器端做的事情就是轮询客户端的状态,转发不在一个网段的客户端的消息.

发送和接收方式都采用的异步非阻塞方式很简单.代码如下.请做通讯方面的高手指教,还需要做什么样的处理?
或者谁有可行的客户端/服务器端通讯部分的代码.
先上100分,问题解决后再开100分送上!请通讯方面的高手帮忙看下!是不是每次通讯后需要关闭udpclient释放连接,还是说?

public void Send(IPAddress Host, int Port, byte[] Data)
{
try
{
IPEndPoint endPoint = new IPEndPoint(Host, Port);
this.UDP_Server.BeginSend(Data, Data.Length,endPoint, new AsyncCallback(SendCallback), null);
}
catch (Exception exception)
{
}
}
private void SendCallback(IAsyncResult ar)
{
try
{
int bytesSent = this.UDP_Server.EndSend(ar);
}
catch (Exception e)
{

}
}

//异步接收
private void GetUDPData()
{
try
{
AsyncCallback GetRecvBuffer = new AsyncCallback(ReceiveCallback);
this.UDP_Server.BeginReceive(GetRecvBuffer, null);
}
catch (Exception exception)
{

}
}
private void ReceiveCallback(IAsyncResult ar)
{
try
{
IPEndPoint endpoint = null;
byte[] data = this.UDP_Server.EndReceive(ar, ref endpoint);
-----转到操作
}
catch (Exception exception)
{

}
finally
{
GetUDPData();
}
}
...全文
935 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
xu_2007 2008-11-26
  • 打赏
  • 举报
回复
服务器收不到包应该是逻辑方面的问题吧!
zlb789 2008-11-25
  • 打赏
  • 举报
回复
顶起 顺便学习下
killer_liqiao 2008-11-25
  • 打赏
  • 举报
回复
up
amendajing 2008-11-25
  • 打赏
  • 举报
回复
做过客户端(数量1000左右)通讯的朋友们,帮忙看看啊....
junsanrao 2008-11-25
  • 打赏
  • 举报
回复
学习来了
smysky 2008-11-25
  • 打赏
  • 举报
回复
顶上去,关注
amendajing 2008-11-25
  • 打赏
  • 举报
回复
现在的情况就是数据量少,连接数多!

yilanwuyu123 2008-11-25
  • 打赏
  • 举报
回复
mark
caiyakang 2008-11-25
  • 打赏
  • 举报
回复
顶一下,直接用socket吧!
udpclient是封装后的socket
tonny008 2008-11-25
  • 打赏
  • 举报
回复
Remoting这么好用的东西不用
amendajing 2008-11-25
  • 打赏
  • 举报
回复
现在的问题是当客户端连接达到一定数量的时候,
客户端发包给服务器端,服务器端程序收不到这个包,用其它工具查看,包已经提交到服务器的端口了,只是服务器程序没接收到.

各位有没碰到过这种情况?
umbrella_yang 2008-11-25
  • 打赏
  • 举报
回复
我有缓冲池的DLL
做好的框架

我的做法是这样,采TCP连接服务器
然后一个服务器采用一个缓冲池来存放发过来的数据(不管什么人发的)

然后有个方法从缓冲池中提取完整命令(为了防止TCP粘包)

然后事件回传 然后响应

呵呵 需要的请来找我 : QQ:250623008
amendajing 2008-11-25
  • 打赏
  • 举报
回复
开辟缓冲区可能是个比较好的解决办法.

能否提供一些实际的代码做参考?
一游 2008-11-25
  • 打赏
  • 举报
回复
不知道你具体的应用情形,就你现在说的问题我讲下个人的看法

你可以开辟个缓冲区,将接收到的数据放到这个缓冲区,然后开一个线程对这个缓冲区的数据进行处理,按你说的就是转发


还有我觉得你转发的这块也好像有问题。

我做过一种,15秒大概有10000条数据传输的,没有什么问题
wenbin 2008-11-24
  • 打赏
  • 举报
回复
用TCP应该好些吧,UDP采用广播或者多播形式,连接多了的话,性能一定会下降
TCP只要数据量不大,支持几百个还是不成问题。
如果数据量大,那只有多搞几台服务器了。。。
如果信息量小,而连接多,那么可以考虑完成端口。
周药师 2008-11-24
  • 打赏
  • 举报
回复
用线程试试...
hongdalcf 2008-11-24
  • 打赏
  • 举报
回复
互联网专线、光纤、DPLC、NGN电话等详解
A、互联网专线(DIA)
互联网专线( Dedicated Internet Access)接入定义:
互联网专线接入业务是指为客户提供各种速率的专用链路(主要提供传输速率为2M及以上速率),直接连接IP骨干网络,实现方便快捷的高速互联网上网服务。 互联网专线接入业务按照客户需求可提供更高速率的专线接入,主要有10Mb/s、50Mb/s、100Mb/s、155Mb/s等等。
使用 “ 互联网专线 ” 有什么好处?
1 、 宽带上网不用电话线而使用专门的网线( RJ45 接口),有充分的带宽保证;
2 、 上网带宽的扩充升级非常方便;
3 、 采用与电话线完全独立的网线来传输数据,上网和打电话两不误;
4 、 超高速上网,比传统 modem 拨号上网快数十倍;
5 、 上下行速率对称,无论上传和下载均可保证高速宽带;
6 、 可顺利进行在线电影收看、视频会议和宽带电话等多媒体业务;
7 、 可以多机共享,一线上网;

Q1:互联网专线和ADSL上网有何区别?
A:简单归纳有一下几个方面的区别:
接入方式:ADSL是使用普通的铜缆,而互联网专线主要使用光纤。
支持的速率:ADSL最高支持到2M,而互联网专线可以支持到155M甚至更高。
可靠性:ADSL针对的是个人家庭用户的产品,而互联网专线是针对商用客户。在可靠性方面,ADSL无法和互联网专线相比。
Q2:什么是AS号码,申请AS号码需要什么条件?
A:AS号码即自治系统号码,是用来标识独立的自治系统的,在同一个自治系统内,使用相同内部路由协议,自治系统间使用外部路由协议(通常是BGP协议)。
申请AS号码的单位需要与两家以上(包括两家)、有不同AS号码的网络接入商进行网络互联,并计划三个月内与他们同时运行BGP协议进行外部路由。
只有一个网络接入商的ISP,我们建议使用私有AS号码(AS64512 到 AS65535)与对方进行BGP连接。
适用范围
大中小企业以及政府机关等,用来做为高速互联网接入服务。
企业在企业内部放置服务器,建立相关互联网应用服务,利用互联网专线高速接入Internet网。
学校校园网通过互联网专线接入与Internet网高速互联。
ISP、ICP应用互联网专线接入业务接入互联网,利用高速带宽开展互联网各项增值业务服务。
B、国内专线(DPLC)
定义:
1. 国内专线是指通过SDH、DDN等传输方式,提供包括市内(营业区内和区间)、省内、省际在内的各种速率的(K级及2M以上)、端到端的数字专有带宽连接的租用服务。
2. SDH/DDN传输具有误码率低,时延小的特点,可实现语音、数据、视频信息的透明传输。
3. 专有带宽的整条电路资源仅为一个客户服务,全程带宽完全独享。
4. DPLC业务在广东实施时主要使用以光纤为主要接入手段的数字电路形式完成。
国内专线电路(简称:DPLC)是指通过DDN、SDH、综合传输设备等传输方式,向用户提供包括市内、省内、省际在内的,速率从64KBPS-2.5GBPS的端到端转悠带宽连接的服务。DPLC适用于任何高速率、大信息量、高实时性要求的信息传送,可广泛使用于银行、证卷、教育、ISP等行业,也适用于任何局域网间的高速互联,以及会议电视、远程教育、远程医疗等实时性强的媒体流传送。
1.国内专线业务类型
从使用的技术类型作为分类,国内专线可分为:DDN、传统SDH网、以太网专线等。可提供的速率范围广泛,包括E1、E2、E3、155M等,支持多种类型接口的数据专线业务。
2.国内专线(DPLC)特点
自动恢复
国内专线主要采用SDH自愈环传输技术,以光纤为主要传输媒体,可实现最高级别的品质保障。
实时性强
所使用的技术成熟,带快独占网络安全性最高,传输质量高时延小,可承诺每千公里时延〈10MS,误码率低于10。
应用广泛
国内专线是一种点对点全透明物理传输通道,支持数据、语音、多媒体等多种应用业务,用户可自由选择网络设备及通信协议。
高性价比
高带宽、低价格,性能价格比出众。
产品优势
• 采用国际领先的IP/(SDH)/DWDM网络构架,可以实现高速传输;
• 多通道保护措施确保任意节点间多径连接;
• SDH主备用时钟同步定时,时钟信号安全;
• 设备采用模块化结构,适应动态升级和网络拓扑的扩展;
• 通路组织中充分考虑了各城市业务需求,以满足不断变化的需求;
• 数字透明电路传输支持任意协议;
• 拥有完备的网络管理系统,可对网元进行性能、故障、配置及安全等方面的管理。
C、NGN电话
1、NGN介绍
NGN 是“下一代网络(Next Generation Network)”或“新一代网络(New Generation Network)”的缩写。NGN是以软交换为核心,能够提供话音、视频、数据等多媒体综合业务,采用开放、标准体系结构,能够提供丰富业务的下一代网络。
基于分组的网络,能够提供电信业务;利用多种宽带能力和QoS保证的传送技术;其业务相关功能与其传送技术相独立。NGN使用户可以自由接入到不同的业务提供商;NGN支持通用移动性。
NGN的基本特征
  分组传送;控制功能从承载、呼叫/会话、应用/业务中分离;业务提供与网络分离,提供开放接口;利用各基本的业务组成模块,提供广泛的业务和应用(包括实时、流、非实时和多媒体业务);具有端到端QoS和透明的传输能力;通过开放接口与传统网络互通;具有通用移动性;允许用户自由地接入不同业务提供商;支持多样标志体系,并能将其解析为IP地址以用于IP网络路由;同一业务具有统一的业务特性;融合固定与移动业务;业务功能独立于底层传送技术;适应所有管理要求,如应急通信、安全性和私密性等要
2、NGN组网方式
A、用户接入:
1)光纤LAN接入;
2)Cable Modem接入;
3)无线接入;
4)ADSL、VDSL和XDSL与APON相结合接入;
B、ngn 承载网络:NGN承载网能够为NGN业务提供一个端到端分组传达的承载平台。承载网是一张能够保障服务质量、具备安全性、并可运营和可管理的IP网络。NGN承载网包括承载骨干网和承载接入网;
C、软交换控制中心:它独立于底层承载协议,主要完成呼叫控制、媒体网关接入控制、资源分配、协议处理、路由、认证、计费等主要功能,可以向用户提供现有网络能够提供的业务,并向业务支撑环境提供底层网络能力的访问接口。应用服务器则是软交换体系中业务支撑环境的主体,也是业务提供、开发和管理的核心。
D、NGN互联:
(1)NGN与PSTN/ISDN/GSM/CDMA的互通;
(2)NGN与七号信令网的互通 ;
(3)软交换网络与现有智能网的互通;

D、服务承诺
• 金联安公司按照大客户服务等级进行服务,提供客户经理一对一的上门服务;
• 售后服务人员随叫随到;
• 国内网站访问延时<300ms;
• 国际网站访问延时<600ms;
• 故障响应时限:20分钟;
• 故障修复时限:4小时。
如有互联网专线、NGN电话等这方面的需求,可致电:
联系人:龙先生 电话:15099778137 QQ:952555405
网站:www.hongdatelecom.cn

amendajing 2008-11-24
  • 打赏
  • 举报
回复
对c/s结构的通讯是初次接触,请这方面的高手帮忙看看!

现在程序功能是没问题的,主要是登陆服务器的客户端达到一定数量(100个都突破不了)后,产生的性能问题.导致服务器端对客户端请求不能及时反映或者就是不反映.问题很严重.感觉服务器端拥塞了....

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧