在使用lwip协议栈做TCP客户端通信的时候发现,如果在发送的时候关闭TCP服务器的连接则在调用ret = send(mytcp_sock, out_str11, strlen(out_str11), 0);函数的时候会返回-1.
如果在正常通信的时候切换服务器的wifi,而没有断开TCP服务器,在调用ret = send(mytcp_sock, out_str11, strlen(out_str11), 0);函数时会发生阻塞。没有数据返回。
这样就无法检测网络连接是否断开,如果需要设置发送超时,则需要在api_msg.c文件中的struct netconn*
netconn_alloc(enum netconn_type t, netconn_callback callback)函数里修改
conn->send_timeout = 3000//3000=3秒
发送和接收函数的超时时间都可以设置,这样在服务器断开wifi时就可以检测到网络连接断开。然后重新连接服务器。
api_msg.c文件在rt-thread->components->net->lwip-2.0.2->src->api文件下。