SuperSocket 服务端接受慢

wangawang520 2019-04-08 09:37:43
各位老铁,我用网络上的例子,做一个接收测试,单个客户端,每300ms发一条消息给Server,一共发500条。
运行时发现,客户端把500条消息发完后,服务器端才收到将近150条消息,再过8分钟后,所有的500条消息才能收完。
服务器配置如下:
private void MainForm_Load(object sender, EventArgs e)
{
var config = new SuperSocket.SocketBase.Config.ServerConfig()
{
Name = "SSServer",
ServerTypeName = "SServer",
ClearIdleSession= true, //60秒执行一次清理90秒没数据传送的连接
ClearIdleSessionInterval = 60,
IdleSessionTimeOut = 90,
MaxRequestLength = 2048, //最大包长度
Ip = "127.0.0.1",
Port = 50001,
MaxConnectionNumber = 60000,
};
app = new MyServer(app_NewSessionConnected, app_SessionClosed);
LogHelper.SetOnLog(new LogHelper.LogEvent((m) =>
{
txtAll.Text = string.Join(" ", m, "\r\n");
txtAll.Select(txtAll.TextLength, 0);
txtAll.ScrollToCaret();
}));
app.Setup(config);
if (!app.Start())
{
LogHelper.WriteLog(string.Format("Socket {0}:{1}启动失败,请检查权限或端口是否被占用!", config.Ip, config.Port));
}
}
接收Command:
private int Action = 3;
public override string Name
{
get { return Action.ToString(); }
}
/// <summary>
/// 上行
/// </summary>
public override void ExecuteCommand(MySession session, MyRequestInfo requestInfo)
{
LogHelper.WriteLog(session.NickName + " !! " + requestInfo.Body);
Push(session, "已收到文本");
}

客户端发送如下:
//每5秒发一次心跳
var idx = 0;
sendTimer = new System.Timers.Timer(300);
sendTimer.Elapsed += new System.Timers.ElapsedEventHandler((s, x) =>
{

if (idx < 500)
{
idx++;
if (client.IsConnected && cbHeart.Checked)
{
var arr = new List<byte> { 0, 3 };
var txt = System.Text.Encoding.UTF8.GetBytes("this client "+ txtMsg.Text+" test : " + txtMsg.Text + "0"+idx);
arr.Add((byte)(txt.Length / 256));
arr.Add((byte)txt.Length);
arr.AddRange(txt);
client.Send(arr.ToArray());

LogHelper.WriteLog("发送数据:C"+ txtMsg.Text +" idx = "+idx+" : " + DataHelper.ByteToHex(arr.ToArray(), arr.Count)+idx);
//txtMsg.Text = "";
}
}
});
sendTimer.Enabled = true;
sendTimer.Start();


从Log来看,服务端将近1s才收到一条消息。各位大手帮忙看下,怎么才能做到SuperSocket实时接收。
...全文
478 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghui0380 2019-04-09
  • 打赏
  • 举报
回复
1.我们不认条,我们认字节 2.同样我们不认触发一次,我们认解析出包一次 底层有算法,他会合并包。不是说发2条,就会触发2次。 so,告诉我们你一共发了多少字节,一共收了多少字节。然后总耗时多少秒
  • 打赏
  • 举报
回复
谁知道你的服务器如何设计开发的?你贴的代码没说明任何设计。
stherix 2019-04-08
  • 打赏
  • 举报
回复
日志占用了太多时间 建议去掉 或者换成log4net
内容概要:本文围绕“面向高精度电流控制的PMSM多参数PSO辨识模型研究”,系统阐述了基于Simulink的永磁同步电机(PMSM)多参数辨识方法,重点采用粒子群优化算法(PSO)实现对电机关键内部参数的高精度辨识。研究构建了完整的PMSM控制系统仿真模型,结合智能优化算法,解决了传统参数辨识中精度低、收敛的问题,有效提升了电流环控制的动态性能与稳态精度。该方法特别适用于对控制精度和响应速度要求较高的工业应用场景,如高性能伺服系统、电动汽车驱动系统等,具有较强的工程实用价值和科研参考意义。文中提供了完整的Simulink仿真模型与配套代码,确保了研究内容的可复现性和实践操作性。; 适合人群:具备电机控制、自动化或电气工程等相关专业背景,熟悉MATLAB/Simulink仿真环境,从事电机驱动系统研发、控制算法设计或相关领域科研工作的工程师及研究生,尤其适合工作1-5年、希望深入理解先进参数辨识技术的研发人员。; 使用场景及目标:①开展高精度PMSM控制系统的设计与参数辨识研究;②学习并掌握PSO等智能优化算法在电机系统参数辨识中的具体实现与调优技巧;③完成学术论文复现、科研项目验证、毕业设计或工程原型开发,提升对现代电机控制核心技术的理解与应用能力。; 阅读建议:建议读者结合提供的Simulink模型与源代码进行动手实践,按照文档逻辑逐步搭建与调试仿真系统,重点关注PSO算法与电机模型的交互机制、目标函数设计及参数收敛过程,通过对比不同工况下的辨识结果,深入理解算法性能与控制精度之间的内在联系。

111,129

社区成员

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

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

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