#include<QtNetwork/QTcpSocket>
#include<QtNetwork/QTcpServer>

1.服务器端

void About::init_tcp()
{
//server
this->tcpServer = new QTcpServer(this);
this->tcpSocket = new QTcpSocket(this);
if(!tcpServer->listen(QHostAddress::Any,))
{
qDebug()<<tcpServer->errorString();
close();
return;
}
connect(tcpServer,SIGNAL(newConnection()),this,SLOT(acceptConnection()));
}
void About::acceptConnection() {
tcpSocket = tcpServer->nextPendingConnection();
qDebug() << "a client connect!!";
connect(tcpSocket,SIGNAL(readyRead()),this,SLOT(revData()));
} void About::tcp_write(const char* data)
{
tcpSocket->write(data);
}

2. 客户端,加入自动重连

void About::init_tcp()
{
//client
QString ip = getIP();
this->tcpSocket = new QTcpSocket(this);
tcpSocket->abort();
tcpSocket->connectToHost(ip,);
connect(tcpSocket,SIGNAL(readyRead()),this,SLOT(revData())); connect(tcpSocket, SIGNAL(connected()), this, SLOT(OnSocketConnected()));
connect(tcpSocket, SIGNAL(disconnected()), this, SLOT(OnSocketDisconnected()));
connect(tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(OnSocketError(QAbstractSocket::SocketError))); connect(&m_timer, SIGNAL(timeout()), this, SLOT(ConnectServer()));
m_timer.setInterval();
m_timer.start();
} QString About::getIP()
{
QString local_ip;
QString str;
QList<QHostAddress> list = QNetworkInterface::allAddresses();
foreach (QHostAddress address, list)
{
if(address.protocol() == QAbstractSocket::IPv4Protocol)
{
//IPv4地址
if (address.toString().contains("127.0."))
{
continue;
}
local_ip = address.toString();
}
}
if (local_ip == "127.0.0.1")
{
qDebug() << "get local ip fail";
return ;
}
else
{
return local_ip;
}
} void About::OnSocketConnected()
{
qDebug() << "connected to server";
m_bServerConnected = true;
} void About::OnSocketDisconnected()
{
qDebug() <<"Server disconnected";
m_bServerConnected = false;
} void About::OnSocketError(QAbstractSocket::SocketError error)
{
//emit ShowStatus(m_pTcpSocket->errorString());
qDebug() << tcpSocket->errorString();
} void About::ConnectServer()
{
if(!m_bServerConnected)
{
QString ip = getIP();
tcpSocket->connectToHost(ip, );
//m_pTcpSocket->waitForConnected(2000);//如果调用这句,界面会卡死
}
}
void About::revData()
{
//server
QString datas = tcpSocket->readAll();
qDebug()<<datas;
}
void About::tcp_write(const char* data)
{
tcpSocket->write(data);
}

QT socket相关的更多相关文章

  1. TCP/IP协议栈源码图解分析系列10:linux内核协议栈中对于socket相关API的实现

    题记:本系列文章的目的是抛开书本从Linux内核源代码的角度详细分析TCP/IP协议栈内核相关技术 轻松搞定TCP/IP协议栈,原创文章欢迎交流, byhankswang@gmail.com linu ...

  2. socket相关系统调用的调用流程

    最近一直在读内核网络协议栈源码,这里以ipv4/tcp为例对socket相关系统调用的流程做一个简要整理,这些相关系统调用的内部细节虽然各有不同,但其调用流程则基本一致: 调用流程: (1)系统调用 ...

  3. socket相关的开机初始化分析

    针对内核3.9 系统开启时,会使用init/main.c,然后再里面调用kernel_init(),在里面会再调用do_basic_setup(),调用do_initcalls(),调用do_one_ ...

  4. Qt 学习之路 2(73):Qt 线程相关类

    Home / Qt 学习之路 2 / Qt 学习之路 2(73):Qt 线程相关类 Qt 学习之路 2(73):Qt 线程相关类  豆子  2013年11月26日  Qt 学习之路 2  7条评论 希 ...

  5. 一只简单的网络爬虫(基于linux C/C++)————socket相关及HTTP

    socket相关 建立连接 网络通信中少不了socket,该爬虫没有使用现成的一些库,而是自己封装了socket的相关操作,因为爬虫属于客户端,建立套接字和发起连接都封装在build_connect中 ...

  6. Qt 学习之路 :Qt 线程相关类

    希望上一章有关事件循环的内容还没有把你绕晕.本章将重新回到有关线程的相关内容上面来.在前面的章节我们了解了有关QThread类的简单使用.不过,Qt 提供的有关线程的类可不那么简单,否则的话我们也没必 ...

  7. QT socket网络通信

    https://blog.csdn.net/u013007900/article/details/50411796 里主要讲解如何实现TCP和UDP的简单通信. socket简介在LINUX下进行网络 ...

  8. Socket 相关资料(随笔)

    由于项目上的 http 请求量较大,项目上性能跟不上.于是考虑把 短连接的 http 换成 长连接的tcp 形式 试试效果. 先 研究了一下 长连接方式.就是要用到 socket 方面的知识. pac ...

  9. Qt socket制作一个简单的文件传输系统

    服务器 用qt designer设计出服务器界面: 上代码: Server.pro #------------------------------------------------- # # Pro ...

随机推荐

  1. 模拟搭建Web项目的真实运行环境(一)

    序言 最近尝试完整搭建一个Web项目的运行环境,总结一下这几个月学到的知识点. 后面的文章主要包括一下几个内容: A. 搭建一个Linux服务器,用来部署Redis.Mongo等数据存储环境: B. ...

  2. MapReduce类型与格式(输入与输出)

    一.输入格式 (1)输入分片记录 ①JobClient通过指定的输入文件的格式来生成数据分片InputSplit: ②一个分片不是数据本身,而是可分片数据的引用: ③InputFormat接口负责生成 ...

  3. AngularJS 表单

    AngularJS 表单是输入控件的集合. HTML控件 以下 HTML input 元素被称为 HTML 控件: input 元素 select 元素 button 元素 textarea 元素 H ...

  4. 电脑莫名其妙的被装上了流氓软件DNSunlocker的解决办法

    重大更新:之前说的这些方法只能删除流氓文件,不能解决其弹出机具诱惑性的广告,网络经常不好用 经过测试,使用Malwarebytes Anti-Malware可以彻底解决这个问题,还能发现更多隐藏在你电 ...

  5. matlab学习第一天

    >> x=linspace(-,,); >> y=x.^.*sin(x); >> plot(x,y,) >> plot(x,y,) 分析: linspa ...

  6. Windows Server 2008 R2 配置AD(Active Directory)域控制器

    实施过程: 一.安装Windows Server2008 R2操作系统 (过程略) 二.安装域控制器 1. 修改电脑名称 2.修改电脑DNS 三.配置AD 1.在"服务器管理器"- ...

  7. AngularJS学习之依赖注入

    1.什么是依赖注入:简称DI,是一种软件设计模式,在这种模式下,一个或更多的依赖(或服务)被注入(或者通过引用传递)到一个独立的对象(或客户端)中,然后成为了该客户端状态的一部分. 该模式分离了客户端 ...

  8. [自动运维]oracle自动备份

    数据是应用的核心部分,程序坏了换台机器重新发布就可以,但数据一旦丢失,造成的损失将不可挽回,程序发布到生产后,数据的备份便显得尤为重要,由于不一定所有的服务均有资金完成高级的备份如RAC和DG,在我们 ...

  9. 我的c++学习(9)指针

    ◆ 1.指针变量的赋值.初始化与简单应用 ,y; y=; // y可以理解成该存储单元的当前名字 int *ip; // ip是一个指针(变量) ip=&y; // ip是存储空间y的地址 c ...

  10. 2016 Multi-University Training Contest 6

    5/12 2016 Multi-University Training Contest 6 官方题解 打表找规律/推公式 A A Boring Question(BH) 题意: ,意思就是在[0,n] ...