重点:实现从内网到外网穿透
从本地到阿里云服务器实现
由于本人是学生,还需要突破校园网认证。
校园网认证 通过配置路由器的静态IP,而不使用DHCP,从而突破校园网认证
采用TCP方式传输图像,附TCP传输代码
void netcamera_task(void *arg)
{
err_t err;
static ip_addr_t server_ipaddr,loca_ipaddr;
static u16_t server_port,loca_port;
u8 res=0;
u32 *tbuf;
LWIP_UNUSED_ARG(arg);
server_port = REMOTE_PORT; //服务器的端口
IP4_ADDR(&server_ipaddr, lwipdev.remoteip[0],lwipdev.remoteip[1], lwipdev.remoteip[2],lwipdev.remoteip[3]); //服务器公网IP地址
while(1) //等待连接
{
tcp_clientconn = netconn_new(NETCONN_TCP); //创建一个TCP链接
err = netconn_connect(tcp_clientconn,&server_ipaddr,server_port);//连接服务器
if(err != ERR_OK)
{
netconn_delete(tcp_clientconn); //返回值不等于ERR_OK,删除tcp_clientconn连接
}
else if(err==ERR_OK) //成功检测到连接
{
camera_init();
delay_ms(1000); //此延时一定要加!!
while(1) //开始视频传输
{
res=netcam_fifo_read(&tbuf); //读取FIFO中的数据
if(res) //有数据要发送
{
err=netconn_write(tcp_clientconn,tbuf,NETCAM_LINE_SIZE*4,NETCONN_COPY);//发送数据
if((err==ERR_CLSD)||(err==ERR_RST))//关闭连接,或者重启网络
{
camera_deinit();//复位网络摄像头
netconn_close(tcp_clientconn);
netconn_delete(tcp_clientconn);
break;
}
}else
{
OSTimeDlyHMSM(0,0,0,5);//延时2ms
}
}
}
}
}
重点:实现从内网到外网穿透
从本地到阿里云服务器实现
由于本人是学生,还需要突破校园网认证。
校园网认证 通过配置路由器的静态IP,而不使用DHCP,从而突破校园网认证
采用TCP方式传输图像,附TCP传输代码
void netcamera_task(void *arg)
{
err_t err;
static ip_addr_t server_ipaddr,loca_ipaddr;
static u16_t server_port,loca_port;
u8 res=0;
u32 *tbuf;
LWIP_UNUSED_ARG(arg);
server_port = REMOTE_PORT; //服务器的端口
IP4_ADDR(&server_ipaddr, lwipdev.remoteip[0],lwipdev.remoteip[1], lwipdev.remoteip[2],lwipdev.remoteip[3]); //服务器公网IP地址
while(1) //等待连接
{
tcp_clientconn = netconn_new(NETCONN_TCP); //创建一个TCP链接
err = netconn_connect(tcp_clientconn,&server_ipaddr,server_port);//连接服务器
if(err != ERR_OK)
{
netconn_delete(tcp_clientconn); //返回值不等于ERR_OK,删除tcp_clientconn连接
}
else if(err==ERR_OK) //成功检测到连接
{
camera_init();
delay_ms(1000); //此延时一定要加!!
while(1) //开始视频传输
{
res=netcam_fifo_read(&tbuf); //读取FIFO中的数据
if(res) //有数据要发送
{
err=netconn_write(tcp_clientconn,tbuf,NETCAM_LINE_SIZE*4,NETCONN_COPY);//发送数据
if((err==ERR_CLSD)||(err==ERR_RST))//关闭连接,或者重启网络
{
camera_deinit();//复位网络摄像头
netconn_close(tcp_clientconn);
netconn_delete(tcp_clientconn);
break;
}
}else
{
OSTimeDlyHMSM(0,0,0,5);//延时2ms
}
}
}
}
}
举报