// 发送数据到服务器
void* send_data_thread(void* arg)
{
nvr_client_base_c* client = (nvr_client_base_c*)arg;
qDebug()<<("send_data_thread start")<<endl;
while (1)
{
usleep(3000000);
if (client->sockt_fd_ < 0)
{
continue;
}
QByteArray data = client->pop_data();
if (data.isEmpty())
{
//qDebug()<<"data is empty()="<<endl;
continue;
}
// qDebug()<<"ready send data size="<<data.size()<<endl;
int bytes_sent = send(client->sockt_fd_, data.data(), data.size(), 0);
qDebug()<<"bytes_sent size="<<bytes_sent<<endl;
if (bytes_sent < 0) {
if (errno == ECONNRESET || errno == EPIPE) {
// 连接已断开,进行重连操作
qDebug()<<" send error need do_disconnect "<<bytes_sent<<endl;
client->do_disconnect();
linux C的TCP客户端断线重连机制实现
最新推荐文章于 2025-04-21 18:02:09 发布