用TServerSocket接收数据怎么老是报10035的连接错误

jiek0808 2006-08-01 10:00:21
服务端:
void __fastcall TForm1::svrAccept(TObject *Sender,
TCustomWinSocket *Socket)
{
mmo1->Lines->Add("from IP:"+Socket->RemoteAddress+" port: "+Socket->RemotePort);
if((fp=fopen("d:\\333","rb"))==NULL)
{
ShowMessage("open file d:\\333 error");
return;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::svrClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
int szBuff[4096];
int ret=0;
int nCount=0;

while(1)
{
ret=Socket->ReceiveBuf(szBuff,4096);
if(ret==0)
break;
else if(ret==SOCKET_ERROR)
{
ShowMessage(WSAGetLastError());
break;
}
fwrite(szBuff,4096,1,fp);
nCount++;
}
ShowMessage(nCount++);
fclose(fp);
}

客户端:
void __fastcall TForm1::btn1Click(TObject *Sender)
{
FILE* fp;
char* szFileName;
int szBuff[4096];
int nCount=0;
if(dlgOpen1->Execute())
{
szFileName=dlgOpen1->FileName.c_str();
}
if((fp=fopen(szFileName,"rb"))==NULL)
{
ShowMessage("Open File "+AnsiString(szFileName)+" error!");
exit(1);
}
while(!feof(fp))
{
fread(szBuff,4096,1,fp);
cli->Socket->SendBuf(szBuff,4096);
nCount++;
}
ShowMessage(nCount);
fclose(fp);

}
...全文
292 2 打赏 收藏 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
僵哥 2006-08-01
  • 打赏
  • 举报
回复
在非阻塞模式(TServerSocket/TClientSocket使用的是Select,默认为非阻塞模式)由于网络完成部分操作需要相当的时间,而无法立即完成,但是会使函数调用立即返回,从而报出该错误用于给出用户提示,该错误是可以不理会的。
不过感觉奇怪的是TServerSocket本身就有屏蔽掉该错误(详细的可以通过VCL Source查阅,注:Delphi代码).
僵哥 2006-08-01
  • 打赏
  • 举报
回复
10035
Resource temporarily unavailable.

This error is returned from operations on nonblocking sockets that cannot be completed immediately, for example recv when no data is queued to be read from the socket. It is a nonfatal error, and the operation should be retried later. It is normal for WSAEWOULDBLOCK to be reported as the result from calling connect on a nonblocking SOCK_STREAM socket, since some time must elapse for the connection to be established.
内容概要:本文围绕内置式永磁同步电机(IPMSM)的宽速域控制问题,提出了一种最大转矩电流比(MTPA)与基于解析法的弱磁控制协同策略,旨在实现电机在全速域范围内的高效、稳定运行。研究基于电压饱和判据,设计了精确的分区切换机制,确保在不同转速区间内MTPA与弱磁控制策略的无缝衔接与平滑过渡。通过Simulink搭建了完整的电机控制系统模型,对所提出的协同控制策略进行了详细的仿真验证,重点分析了其在动态加速、减速及负载突变等工况下的宽速域动态特性,证明了该方法在提升系统响应速度、抑制转矩脉动和维持电压稳定方面的优越性能。; 适合人群:从事电机控制、电力电子、新能源汽车或自动化领域的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握永磁同步电机在全速域范围内的先进控制策略;② 学习如何设计基于物理约束(如电压饱和)的多模式控制切换逻辑;③ 利用Simulink进行电机控制系统的建模、仿真与性能验证; 其他说明:该资源不仅提供了完整的理论分析和控制框图,还包含了可直接运行的Simulink仿真模型,便于读者复现结果、修改参数并进行二次开发,是深入理解电机高性能控制算法的理想实践材料。
内容概要:本研究聚焦于永磁同步电机(PMSM)在无位置传感器控制下的启动性能优化,提出了一种将模型预测控制(MPC)与模型参考自适应系统(MRAS)相融合的观测器设计方案。该融合观测器充分利用MPC的多步前瞻预测能力和MRAS的强鲁棒性,构建协同机制,旨在解决电机在零速和极低速工况下因反电动势微弱而导致的传统观测器收敛困难、稳定性差的问题。研究通过Simulink仿真实验,深入分析了融合观测器的动态响应特性、收敛速度及其在零速启动过程中的稳定性,验证了该方案相较于单一观测器在提升系统收敛性和平滑启动方面的优越性。; 适合人群:具备电机控制理论基础和Simulink仿真经验,从事电机驱动、电力电子或自动化领域研发工作的工程师及研究生。; 使用场景及目标:① 解决永磁同步电机在零低速区的精确转子位置观测难题;② 设计并验证融合型观测器以提升系统在启动阶段的动态性能和鲁棒性;③ 为高性能无传感器驱动系统的设计提供仿真依据和技术参考。; 阅读建议:此资源以Simulink仿真实现为核心,读者应在理解MPC和MRAS基本原理的基础上,重点学习其融合架构的设计思路与协同机制的实现方法,并通过动手复现仿真模型来深入掌握观测器的参数整定、性能评估与优化技巧。

1,317

社区成员

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

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