服务器端(TServerSocket)出现10053,10054错误怎么办

xwy1982 2005-06-27 08:36:30
客户端:
void __fastcall TForm1::Button3Click(TObject *Sender)//退出
{
logoutSend=IntToStr(nklen)+MyName+"@logout@";
ClientSocket1->Socket->SendText(logoutSend);
ClientSocket1->Close();
}

服务器端:
if(SubData1=="@logout@")//如果收到的是退出的信息,则向在线用户发送用户退出信息
{
m=ServerSocket1->Socket->ActiveConnections;
for(i=0;i<m;i++)
{ServerSocket1->Socket->Connections[i]->SendText(用户退出信息);}
}


为什么有时候退出是服务器端会出现10053和10054错误,有时不会?是哪里的问题?要怎么正确退出?

附(10053。10054错误原因):
WSAECONNABORTED 10053
Software caused connection abort.
An established connection was aborted by the software in your host computer, possibly due to a data transmission time-out or protocol error.

WSAECONNRESET 10054
Connection reset by peer.
An existing connection was forcibly closed by the remote host. This normally results if the peer application on the remote host is suddenly stopped, the host is rebooted, the host or remote network interface is disabled, or the remote host uses a hard close (see setsockopt for more information on the SO_LINGER option on the remote socket). This error may also result if a connection was broken due to keep-alive activity detecting a failure while one or more operations are in progress. Operations that were in progress fail with WSAENETRESET. Subsequent operations fail with WSAECONNRESET.

...全文
1067 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xwy1982 2005-07-02
  • 打赏
  • 举报
回复
呵呵,楼上的想法跟我一样,我以前问过别人,他说断开以后,会自动整上去,不知是不是,没有测试过,有空测试一下
joe_zhu 2005-07-01
  • 打赏
  • 举报
回复
从LZ说的最后一个现象来看,应该是客户端断开以后,
执行ServerSocket1->Socket->Connections[i]->SendText(用户退出信息)发生了错误。
举例说明:加入有10个客户端连接到服务器,此时你将原本索引为3的客户端断开连接。
ActiveConnections的数量变为9,但此时你进行for循环时Connections[3]就找不到了
所以会报错,而对于最后连接的客户端就不会存在这个问题了

一点愚见,供LZ参考。你可以测试一下ServerSocket会不会将他的连接索引重排

xwy1982 2005-06-30
  • 打赏
  • 举报
回复
可是这样的包有什么用呢,不是跟普通包一样吗?就是包含的信息不同而已
s端能不能把一个c端断开,c端不会出错,然后的c端的disconnecting里关闭
constantine 2005-06-30
  • 打赏
  • 举报
回复
这个很简单,自己定义一对包,一个又C发给S,说我要断开了,S受到这个包之后就发另一个包给C,告诉他你可以断开了,C受到这个确认包后再断开就行了,跟其他信令一样,老僵大概是这个意思吧
xwy1982 2005-06-29
  • 打赏
  • 举报
回复
客户端不要以ButtonClick事件当中调用关闭,而应该是收到服务器确认消息后再执行关闭连接操作。
-------------------
这个要怎么实现啊

还有一个现象忘记说了,就是如果是最后一个连接到服务器的,不管怎么断开都不会有错误
我不懂电脑 2005-06-28
  • 打赏
  • 举报
回复
同意 unsigned(僵哥(当程序语言成为普及的第三语言之后……)) ( ) 信誉:105 2005
僵哥 2005-06-28
  • 打赏
  • 举报
回复
其实关键问题就在上面的代码当中体现出来了。
客户端需要关闭,然后传一个消息给服务器,接着客户端调用关闭,服务器收到关闭消息之后又回传一条消息给客户端……在这一过程当中,楼主忽略了一点就是中间的传输是需要时间的,并且使用的是非阻塞模式,当网络相对比较繁忙时,那么客户端的消息可以还没传到服务器,客户端就关闭了连接,此时正好服务器收到消息,几预回传消息时,发现客户端已经关闭,故而出现上面的错误信息。要解决的办法应该是客户端不要以ButtonClick事件当中调用关闭,而应该是收到服务器确认消息后再执行关闭连接操作。
constantine 2005-06-28
  • 打赏
  • 举报
回复
void __fastcall TForm1::ClientSocket1Error(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
ErrorCode=0;
}
这样就不会出来了
内容概要:本文提出了一种基于加权稀疏矩阵恢复与加速交替方向乘子法(ADMM)的单通道盲解混响算法,并提供了完整的Matlab代码实现。该方法旨在从仅有的单路接收信号中有效分离出原始声源信号,克服传统多通道方法对硬件的依赖。核心技术结合了信号在时频域的稀疏性先验,通过构建加权机制以增强稀疏矩阵恢复的准确性,并引入加速ADMM算法来优化求解过程,显著提升了算法的收敛速度与计算效率。该算法特别适用于麦克风阵列受限或无法部署的复杂声学环境,能够有效抑制混响干扰,从而显著提升语音信号的清晰度与后续语音识别系统的性能。; 适合人群:具备扎实的数字信号处理、凸优化理论及稀疏表示基础,从事音频信号处理、语音增强、盲源分离或相关领域研究与开发工作的研究生、科研人员及工程技术人员。; 使用场景及目标:①解决单麦克风场景下的语音混响去除难题,提升语音通信质量;②应用于智能助听器、车载语音系统、远程视频会议、人机交互等存在严重混响的实际应用场景;③为盲解卷积、稀疏信号恢复等领域的研究提供一种高效的算法实现范例与优化思路。; 阅读建议:建议读者在深入理解信号稀疏性、ADMM优化框架等理论基础上,结合所提供的Matlab代码进行实践,重点分析加权策略的设计原理及其对恢复性能的影响,并通过调整正则化参数、权重因子等关键变量,探究其在不同混响强度和噪声条件下的鲁棒性与泛化能力。
内容概要:本文介绍了一个基于Simulink的永磁同步电机(PMSM)电流环控制策略仿真模型,重点实现了二阶滑模控制(STSMC)、有限集模型预测控制(FCS-MPC)和PI控制三种先进控制算法。该模型通过构建完整的电机驱动系统仿真环境,对比分析了不同控制方法在动态响应速度、抗干扰能力、稳态精度以及鲁棒性等方面的性能表现,验证了各算法在高性能电机驱动应用中的可行性与优势。文档内容涵盖控制器设计、参数整定、仿真结果分析及系统稳定性评估,具有较强的可复现性和拓展性,适用于先进控制算法的教学演示、科研验证与工程原型开发。; 适合人群:具备一定电机控制理论基础和Simulink仿真经验的电气工程、自动化、控制科学与工程等相关专业的研究生、科研人员以及从事电机驱动系统研发的工程师。; 使用场景及目标:①开展永磁同步电机先进电流控制策略的仿真研究与性能对比;②深入理解滑模控制、模型预测控制与传统PI控制的原理与实现差异;③支撑毕业设计、科研课题或工业项目中控制算法的选型、验证与优化工作。; 阅读建议:此资源以Simulink仿真实现为核心,建议读者结合现代控制理论教材与仿真模型同步操作,重点关注各控制器的结构设计、参数调节过程及仿真响应曲线,通过对比分析深入掌握不同控制策略的作用机制与适用条件,并可在此基础上进行算法改进与功能扩展。

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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