悬赏:已修改,还有错,继续指出代码错误。

Big鹏 2008-10-28 09:40:43

第一贴后修改后的代码,但仍未能正确运行,只输出一个IP地内容,后面的就不循环输出了,没出现崩溃的错误提示,没有内存错误的提示,可见,代码肯定还有错误,望高手再次指点:


//改正后的代码:
//自动发现在线设备,思想是:输入一网段IP,如:192。168。1。2---192。168。1。254,便显示在线设备的IP地址,
//由于会是多个IP地址,所以用二维指针。
#include "snmp_pp/snmp_pp.h"
#include "snmp_pp/Oid.h"
#include <iostream>
#include <cstring>
using namespace std;

char **scan(char *startip, char *endip)
{
char **p=new char*[255];
int status, first, last, i;
int sum=0; //用来统计网段中扫描的IP数目,以在主函数中使用;
char *c=new char[16];
memset(c,NULL,16);
char *firstr1, *firstr2, *firstr3, *firstr4, *lasstr1, *lasstr2, *lasstr3, *lasstr4;
char str1[4], ip[16]; //注意此处应为4。
firstr1 = strtok(startip, ".");
firstr2 = strtok(NULL, ".");
firstr3 = strtok(NULL, ".");
firstr4 = strtok(NULL, ".");
lasstr1 = strtok(endip, ".");
lasstr2 = strtok(NULL, ".");
lasstr3 = strtok(NULL, ".");
lasstr4 = strtok(NULL, ".");

first = atoi(firstr4); //得到起始地址的最后一位数;
last = atoi(lasstr4); //得到终止地址的最后一位数;
for (i=first; i<=last; i++)
{

itoa(i, str1, 10);
strcat(ip, firstr1);
strcat(ip, ".");
strcat(ip, firstr2);
strcat(ip, ".");
strcat(ip, firstr3);
strcat(ip, ".");
strcat(ip, str1); //得到IP地址;


Snmp::socket_startup();
snmp_version version=version1;
Snmp snmp(status,0,false);

Pdu pdu;
Vb vb;
vb.set_oid((Oid)"1.3.6.1.2.1.1.7.0");
pdu+=vb;
CTarget ctarget((IpAddress)ip); //设置网管目标
ctarget.set_version(version);
ctarget.set_retry(1); //UDP包重发次数,默认值为1
ctarget.set_timeout(1);//超时时间设为1,注:总等待时间=超时值*(重传次数+1)
ctarget.set_readcommunity("public");
SnmpTarget* target;
target=&ctarget;
status=snmp.get(pdu,*target);
if(status==SNMP_CLASS_SUCCESS)//如果返回值成功,则说明该设备存在,把IP输入以供显示
{

++sum;
p[sum]=new char[16];
memset(p[sum],NULL,16);
strcpy(p[sum],ip);
}
}
itoa(sum,c,10);
p[0]=new char[16];
memset(p[0],NULL,16);
strcpy(p[0],c);
delete []c;
Snmp::socket_cleanup();
return &p[0]; //返回存在IP的数目;以供主函数调用;

}


void main()
{
int s;
char sip[16]="222.18.147.155";
char eip[16]="222.18.147.162";
char **q;
q=scan(sip,eip);
s=atoi(q[0]);
for(int i=0;i<s;i++)
{
cout<<"设备的IP地址为:"<<q[i+1]<<endl;
}
for(int j=0;j<s;j++)
{
delete[]q[j];
}
delete[]q;
}
...全文
145 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
OenAuth.Net 2008-10-29
  • 打赏
  • 举报
回复
LZ不要急,静下心来慢慢调,一定可以找出错误的
太乙 2008-10-29
  • 打赏
  • 举报
回复
q=scan(sip,eip);
s=atoi(q[0]);

看看q是多少,s是多少?
cba_v 2008-10-29
  • 打赏
  • 举报
回复
问一下 是用ace编的吗
这个 用不用学习下 mfc
帅得不敢出门 2008-10-28
  • 打赏
  • 举报
回复
这种问题还是单步调试下去.
我们这样用肉眼看,比较难发现问题.
xhs_lh04 2008-10-28
  • 打赏
  • 举报
回复
好快啊
你现在问题是只输出一次?你调试一下主程序里s是多少,看看问题所在
cyj626 2008-10-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Chiyer 的回复:]
up
[/Quote]mark
星羽 2008-10-28
  • 打赏
  • 举报
回复
up
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zmlovelx 的回复:]
这种问题还是单步调试下去.
我们这样用肉眼看,比较难发现问题.
[/Quote]
呵呵!~

内容概要:本文针对无刷直流电机驱动的电子机械制动(EMB)执行器,建立了考虑Stribeck摩擦特性的非线性耦合动力学模型,并在Simulink环境中完成了系统级仿真分析。研究综合集成了电机动力学、齿轮传动机构与制动执行机构的动力学特性,构建了高保真的机电一体化系统模型。重点引入Stribeck摩擦模型以精确描述低速工况下执行器内部存在的静摩擦、粘滞摩擦与库仑摩擦之间的过渡行为,有效提升了系统在启停、反向运动等瞬态过程中的动态响应仿真精度。通过多工况仿真验证了模型的有效性,能够准确反映摩擦引起的爬行、滞后与定位误差等非线性现象,为EMB系统的高性能控制算法设计(如摩擦补偿、滑模控制)与结构优化提供了高可信度的仿真平台。; 适合人群:从事汽车电子制动系统、电机驱动控制、机电系统建模与仿真研究的研究生、科研人员及工程技术人员,需具备扎实的机械动力学、自动控制理论基础和MATLAB/Simulink仿真能力。; 使用场景及目标:①用于高精度电子机械制动系统的设计验证与性能预测;②为消除摩擦非线性影响的先进控制策略(如自适应控制、智能控制)提供精确的被控对象模型;③深入探究Stribeck摩擦等非线性因素对系统动态性能(如响应延迟、稳态误差)的作用机理; 阅读建议:读者应结合提供的Simulink模型文件,深入剖析Stribeck摩擦模块的数学实现与参数辨识方法,建议通过改变输入指令(如阶跃、正弦)和负载条件进行对比仿真,以直观理解非线性摩擦对系统动态特性的影响。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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