金牌会员
- 积分
- 1012
- 金钱
- 1012
- 注册时间
- 2017-7-27
- 在线时间
- 162 小时
|
楼主 |
发表于 2018-3-18 17:43:06
|
显示全部楼层
//设置远端IP地址
void tcp_client_set_remoteip(void)
{
u8 *tbuf,p1,p2,p3,p4,i=0;
tbuf=mymalloc(SRAMIN,100); //申请内存
if(tbuf==NULL)return;
p1=ch_search(".",1,IP1);
p2=ch_search(".",2,IP1);
p3=ch_search(".",3,IP1);
p4=strlen((char*)IP1);
ip1[0]=num_search(0,p1+1);
ip1[1]=num_search(p1,p2);
ip1[2]=num_search(p2,p3);
ip1[3]=num_search(p3,p4);
//前三个IP保持和DHCP得到的IP一致
lwipdev.remoteip[0]=ip1[0];
lwipdev.remoteip[1]=ip1[1];
lwipdev.remoteip[2]=ip1[2];
lwipdev.remoteip[3]=ip1[3];
myfree(SRAMIN,tbuf);
}
这个函数设置要连接客户端的IP
void lwip_comm_default_ip_set(__lwip_dev *lwipx)
{
u32 sn0;
sn0=*(vu32*)(0x1FFF7A10);//获取STM32的唯一ID的前24位作为MAC地址后三字节
//默认远端IP为:192.168.1.100
tcp_client_set_remoteip();//先选择IP
//MAC地址设置(高三字节固定为:2.0.0,低三字节用STM32唯一ID)
lwipx->mac[0]=2;//高三字节(IEEE称之为组织唯一ID,OUI)地址固定为:2.0.0
lwipx->mac[1]=0;
lwipx->mac[2]=0;
lwipx->mac[3]=(sn0>>16)&0XFF;//低三字节用STM32的唯一ID
lwipx->mac[4]=(sn0>>8)&0XFFF;;
lwipx->mac[5]=sn0&0XFF;
//默认本地IP为:192.168.1.30
lwipx->ip[0]=lwipdev.remoteip[0];
lwipx->ip[1]=lwipdev.remoteip[1];
lwipx->ip[2]=lwipdev.remoteip[2];
lwipx->ip[3]=30;
//默认子网掩码:255.255.255.0
lwipx->netmask[0]=255;
lwipx->netmask[1]=255;
lwipx->netmask[2]=255;
lwipx->netmask[3]=0;
//默认网关:192.168.1.1
lwipx->gateway[0]=lwipdev.remoteip[0];
lwipx->gateway[1]=lwipdev.remoteip[1];
lwipx->gateway[2]=1;
lwipx->gateway[3]=1;
lwipx->dhcpstatus=0;//没有DHCP
} |
|