Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
在程序中如何动态修改设备的IP地址?
发布于 2012-05-12 17:53:07 浏览:5714
订阅该版
RT, 在程序中,比如串口数据处理流程,收到一个特定命令,就会去修改设备的IP地址,请问RT-Thread中如何不通过finish命令的方式,程序自动修改设备IP 请教
查看更多
9
个回答
默认排序
按发布时间排序
bernard
2012-05-12
这家伙很懒,什么也没写!
说明你还没理解finsh shell的精髓 [s:173]
prife
2012-05-12
这家伙很懒,什么也没写!
本帖回复: 写一个函数,用于修改设备的ip地址,然后将这个函数使用finsh的命令或者宏输出到finsh上,然后在finsh中就可以使用这个函数了。 建议楼主好好看 《RT-Thread编程指南》首页有下载,把finsh一章好好看看。 最后:对楼主到处发帖却从不结贴的行为强烈谴责。 [http://www.rt-thread.org/phpbbforum/viewtopic.php?f=2&t=1667](http://www.rt-thread.org/phpbbforum/vie ... f=2&t=1667)
iwillbeback008
2012-05-12
这家伙很懒,什么也没写!
这里发帖还可以像CSDN那样需要结贴么?
iwillbeback008
2012-05-12
这家伙很懒,什么也没写!
set_if(char* netif_name, char* ip_addr, char* gw_addr, char* nm_addr) 这个函数可以修改IP 结贴
bernard
2012-05-14
这家伙很懒,什么也没写!
>这里发帖还可以像CSDN那样需要结贴么? --- 结贴是一种好习惯,既然网友帮助了你,热心网友在回答后可能还想着,采用这种方法是否能够解决这个问题?可能心里还挂着这个问题呢
iwillbeback008
2012-05-14
这家伙很懒,什么也没写!
弱弱问一下,如何结贴?
prife
2012-05-14
这家伙很懒,什么也没写!
所谓结贴的意思是说 最后给出反馈,说明这个问题的最终结果。譬如,你发帖问,有人回复,那么这个别管这个回复如何,问题最后你到底解决没有?给一个最后的反馈,如果解决了,要是能给出解决方案当然更好。这样其他人遇到同样的问题时也可以参考这个帖子。这也是一种贡献。 论坛本身并没有结贴的机制。如果真要结贴,可以最后修改帖子标题,增加【已解决】,或者在最后一楼做一下说明,都是可以的。
iwillbeback008
2012-05-15
这家伙很懒,什么也没写!
今天写了些关于程序中修改IP地址的代码: ``` rt_thread_delete(tcpserver_tid); tcpserver_tid = RT_NULL; /*休眠10个OS Tick然后退出,应切换到idle线程,idle线程将执行真正的线程控制块和线程栈的删除*/ rt_thread_delay(100); //set IP address set_if("e0",chrIPAddress,chrGateway,chrSubnetMask); //重启TCP服务 tcp_server_startup(); ``` ``` void tcp_server_entry(void *parameter) { char *recv_data; rt_uint32_t sin_size; rt_err_t result; int /*sock = -1, connected, */i,j,index1,index2,bNodelay,bytes_received,chrTCPTempN,SecvLen,SecvLenSY,SecvLenTCP; struct sockaddr_in server_addr, client_addr; sock = -1; recv_data = rt_malloc(TCP_BUFFER_SIZE); if (recv_data == RT_NULL) { rt_kprintf("no memory "); goto _exit; } /* create a TCP socket */ if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { rt_kprintf("create socket error "); goto _exit; } /*Winsock的Nagle延时算法将降低小数据报的发送速度,而系统默认是使用Nagle算法(Nagle算法使套接字缓冲最多200ms内的数据包,然后使用一个数据包发送它们,从而减少网络流量) */ bNodelay = 1; setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (char *)&bNodelay, sizeof(bNodelay)); /* initialize server address */ server_addr.sin_family = AF_INET; server_addr.sin_port = htons(TCP_SERVER_PORT); server_addr.sin_addr.s_addr = INADDR_ANY; rt_memset(&(server_addr.sin_zero),8, sizeof(server_addr.sin_zero)); /* bind to server address */ if (bind(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) == -1) { rt_kprintf("bind address failed errno: %d, socket error: %d ", rt_get_errno(),lwip_get_error()); goto _exit; } /* listen */ if (listen(sock, 5) == -1) { rt_kprintf("listen error "); goto _exit; } rt_kprintf(" TCPServer Waiting for client on port 9527... "); sin_size = sizeof(struct sockaddr_in); while(1) { /* accept client connected */ connected = accept(sock, (struct sockaddr *)&client_addr, &sin_size); /* 接受返回的client_addr指向了客户端的地址信息 */ rt_kprintf("I got a connection from (%s , %d) ",inet_ntoa(client_addr.sin_addr),ntohs(client_addr.sin_port)); if (connected > 0) { /* handle this client */ while (1) { deletenewTCP: /* receive data from this connection */ bytes_received = recv(connected,recv_data, TCP_BUFFER_SIZE, 0); if (bytes_received <= 0) { rt_kprintf("close client connection, errno: %d, socket error: %d ", rt_get_errno(), lwip_get_error()); /* connection closed. */ lwip_close(connected); break; } //...... ``` 在比如原有IP地址192.168.1.6端口号9527上建立一个TCP服务[调用tcp_server_startup()]并有客户端连接上,然后程序执行以上代码把IP地址变为192.168.1.2已经成功,但是在紧接着的重启TCP服务[tcp_server_startup()]时执行bind()报以下错误: bind address failed , errno: 98, socket error: 0;[rt_get_errno()=98,lwip_get_error()=0]; 求解!
撰写答案
登录
注册新账号
关注者
0
被浏览
5.7k
关于作者
iwillbeback008
这家伙很懒,什么也没写!
提问
24
回答
147
被采纳
0
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
ART-Pi2移植CMSIS-DAP(基于CherryUSB协议栈)
2
RT-thred的stm32h723对应bsp包CubeMX添加其他外设报错
3
RT-Thread中的time溢出问题,时间戳溢出,解决方法
4
ART-PI使用env驱动ETH网卡,pc和板子可以ping通
5
SystemView线程名字不显示
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
9
个答案
2
次被采纳
xiaorui
3
个答案
2
次被采纳
winfeng
2
个答案
2
次被采纳
三世执戟
8
个答案
1
次被采纳
KunYi
8
个答案
1
次被采纳
本月文章贡献
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
4
次点赞
lizimu
1
篇文章
4
次点赞
Days
1
篇文章
4
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部