问题:VC/MFC/VS2010 CAsyncSocket 网络编程中遇到的问题?

xiaojie10090 2012-05-22 06:10:57
CTestClientApp* pApp=(CTestClientApp*)AfxGetApp();
CTestClientDlg* pDlg=(CTestClientDlg*)pApp->m_pMainWnd;
memcpy(m_szBuffer,"Connected to ",13);
strncat(m_szBuffer,pDlg->m_szServerAdr,sizeof(pDlg->m_szServerAdr));
pDlg->m_receivemsg.InsertString(0,CString(m_szBuffer));

运行程序后,在m_receivemsg成员变量所代表的ListBox控件中显示“Connect to 1”,实际上应该显示“Connect to 10.0.0.6”的,为什么后面的没有了呢?因为m_szServerAdr这个字符串数组中存放的应该是字符串“10.0.0.6”的啊,我怀疑是strncat(m_szBuffer,pDlg->m_szServerAdr,sizeof(pDlg->m_szServerAdr));这个地方的问题,请高手指教!
...全文
325 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaojie10090 2012-05-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

我也遇到过类似问题,把char[]赋值给CString时,只是赋值第一个字符,原因未明。不过下面一段代码倒是可以,我照着写缺不行。
len = recv(m_client.m_hSocket,s,1024,0);
s[len] = NULL;
m_sShowText += s;//m_sShowText为CString
//随时跟踪滚动条的位置
output = (CEdit *)……
[/Quote]

看一下7楼还有我给7楼的回复吧~呵呵,希望对你有用
xiaojie10090 2012-05-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

看你的代码怎么这么累的呢!

memcpy(m_szBuffer,"Connected to ",13);
strncat(m_szBuffer,pDlg->m_szServerAdr,sizeof(pDlg->m_szServerAdr));
应该改成
strncpy(...);
strncat(...);

如果我写就2句代码,如下:
CString strShow;
s……
[/Quote]

嗯,后来我也是这么写的,跟你的差不多,呵呵
CString str;
str=pDlg->m_szServerAdr;
str.Format("Connected to %s",m_szServerAdr);
pDlg->m_receivemsg.InsertString(0,strShow);
这样写完全没问题

总之我发现strncat(),strcat()这些函数在VS2010 UNICODE编码下,根本就不好用!也是想看一下有没有相关解决方法,呵呵,现在不管了,毕业设计赶进度,这个问题就先这样吧,呵呵
Jarrylogin 2012-05-24
  • 打赏
  • 举报
回复
看你的代码怎么这么累的呢!

memcpy(m_szBuffer,"Connected to ",13);
strncat(m_szBuffer,pDlg->m_szServerAdr,sizeof(pDlg->m_szServerAdr));
应该改成
strncpy(...);
strncat(...);

如果我写就2句代码,如下:
CString strShow;
strShow.Format("Connected to %s", pDlg->m_szServerAdr);
pDlg->m_receivemsg.InsertString(0, strShow);
你运行一下试试?
脆弱的肠胃 2012-05-24
  • 打赏
  • 举报
回复
我也遇到过类似问题,把char[]赋值给CString时,只是赋值第一个字符,原因未明。不过下面一段代码倒是可以,我照着写缺不行。
len = recv(m_client.m_hSocket,s,1024,0);
s[len] = NULL;
m_sShowText += s;//m_sShowText为CString
//随时跟踪滚动条的位置
output = (CEdit *)GetDlgItem(IDC_SHOWTEXT);
output->SetWindowText(m_sShowText);
output->LineScroll(output->GetLineCount());
xiaojie10090 2012-05-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 2 楼 的回复:

解决?


是不是因为m_szServerAdr是CString类型的,怎么解决呢?
[/Quote]

啊,不好意思,说错了,m_szServerAdr是char类型数组
xiaojie10090 2012-05-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

解决?
[/Quote]

是不是因为m_szServerAdr是CString类型的,怎么解决呢?
xiaojie10090 2012-05-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

解决?
[/Quote]

我做的不对,还没有解决,好像是
strncat(m_szBuffer,pDlg->m_szServerAdr,sizeof(pDlg->m_szServerAdr));
这一句根本就没有把pDlg->m_szServerAdr中的内容添加到m_szBuffer中,好像只添加了个“1”进去(m_szServerAdr中存的是ip地址“10.0.0.6”)
请问是什么情况啊?
Eleven 2012-05-22
  • 打赏
  • 举报
回复
解决?
xiaojie10090 2012-05-22
  • 打赏
  • 举报
回复
我知道了,是pDlg->m_receivemsg.InsertString(0,CString(m_szBuffer));这个地方的问题,类型转换没转换好
CString(m_szBuffer)
m_szBuffer是char类型数组,要想转化成CString,这样写是不行的,改成下面这样就好了

CString str;
str=m_szBuffer;
str.Format(_T(%S),m_szBuffer);
pDlg->m_receivemsg.InsertString(0,str);
内容概要:本文针对三相并网逆变器在高比例新能源接入背景下的高性能控制需求,提出并研究了一种基于有源点箝位(ANPC)三电平拓扑的复合控制策略。该策略深度融合双极性倍频脉宽调制(DPWMA)、正负序分离锁相技术与电网电压前馈控制,旨在系统性地提升逆变器在稳态电能质量、动态响应速度及复杂电网工况适应性方面的综合性能。通过详细分析ANPC拓扑的硬件优势,如开关损耗均衡、点电位可控性强及输出谐波含量低,为高性能控制奠定了物理基础。在此基础上,DPWMA调制通过等效倍频效应显著优化了输出波形,降低了总谐波畸变率;正负序分离锁相环有效解决了电网不平衡工况下的锁相失真问题,确保了精确的相位同步;电网电压前馈控制则突破了传统反馈控制的滞后性,实现了对电网扰动的快速预判与补偿。全文通过构建完整的Simulink仿真模型,在对称电网、不平衡电网以及电压突变等多种工况下进行了全面的性能验证,结果表明该复合控制策略能有效维持点电位稳定、实现精准锁相、大幅抑制谐波与功率波动,并显著增强系统的动态抗扰能力和整体运行稳定性。; 适合人群:具备电力电子技术、自动控制理论及电力系统基础知识,从事新能源发电并网、大功率变流器控制算法开发或相关领域研究的工程技术人员及高校研究生。; 使用场景及目标:①应用于风电、光伏等新能源发电系统的高性能并网逆变器控制设计;②为解决电网电压不平衡、骤升骤降等非理想工况下的并网稳定性与电能质量问题提供先进的技术方案;③指导基于ANPC等先进多电平拓扑的并网变流器控制算法开发、仿真建模与性能优化。; 阅读建议:建议结合提供的Simulink仿真模型进行实践学习,重点深入理解DPWMA调制的实现逻辑、正负序分离锁相环的设计原理以及前馈-反馈复合控制的协同工作机制,关注各关键模块的参数设计与整定方法,以全面掌握高性能并网逆变器控制系统的构建精髓。
内容概要:本文复现了硕士论文《可再生能源发电与电动汽车的协同调度策略研究》,并通过Python代码实现了其的核心模型。研究聚焦于在高比例可再生能源接入的背景下,如何通过协同优化风电、光伏等间歇性电源与大规模电动汽车的充电行为,实现电力系统的削峰填谷、提升新能源消纳能力并保障电网运行稳定性。文构建了一个综合考虑风光出力预测、电动汽车充电需求建模、电网负荷特性及分时电价机制的多目标优化调度模型,并采用先进的优化算法求解最优充放电策略,旨在降低电网负荷波动、减少弃风弃光现象以及用户充电成本。该资源不仅提供了完整的代码实现,还详细阐述了模型的设计逻辑与技术路径,具有较强的可复现性和扩展性。; 适合人群:具备一定Python编程基础和电力系统基础知识,从事新能源、智能电网、电动汽车或优化调度方向研究的硕士研究生、科研人员及工程技术人员。; 使用场景及目标:① 学习并掌握可再生能源与电动汽车协同调度的基本建模方法与优化求解思路;② 复现经典硕士论文研究成果,用于课程设计、科研入门或项目原型开发;③ 基于提供的代码框架进一步扩展功能,如引入V2G(车辆到电网)机制、考虑电池损耗、分布式储能或更复杂的用户行为建模。; 阅读建议:建议读者结合文提到的Matlab版本资源对照学习,重点关注模型构建的数学逻辑与算法实现细节,运行代码时注意检查所需依赖库(如NumPy、Pandas、SciPy或常用优化求解器)的安装与配置,鼓励通过修改参数设置、调整场景条件等方式进行仿真验证与结果对比分析,以深化对协同调度机制的理解。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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