#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. apache通过cgi调用exe程序

    windows下,使用c写了一个简单的cgi程序,生成exe类型的可执行文件,代码如下: #include<stdio.h> int main() { printf("Conte ...

  2. sqlserver数据以及日志文件的设置小结

    1.1:增加次数据文件 从SQL SERVER 2005开始,数据库不默认生成NDF数据文件,一般情况下有一个主数据文件(MDF)就够了,但是有些大型的数据库,由于信息很多,而且查询频繁,所以为了提高 ...

  3. 使用Lua脚本语言开发出高扩展性的系统,AgileEAS.NET SOA中间件Lua脚本引擎介绍

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  4. PAT A 1022. Digital Library (30)【结构体排序检索】

    https://www.patest.cn/contests/pat-a-practise/1022 直接模拟, 输入,按id排序,检索 #include <iostream> #incl ...

  5. 通过VS创建简单的WCF服务

    http://www.cnblogs.com/artech/archive/2007/09/15/893838.html http://www.topwcftutorials.net/2013/09/ ...

  6. hdu 5677 ztr loves substring 多重背包

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission( ...

  7. asp.net c# 网上搜集面试题目大全(附答案)

    1.String str=new String("a")和String str = "a"有什么区别? String str = "a"; ...

  8. ASIHttpRequest 使用理解

    开源库:ASIHttpRequest ASIHttpRequest 下载网址:http://github.com/pokeb/asi-http-request 依赖的5个库文件:CFNetwork, ...

  9. MySQL sql_safe_updates 分析

    我在练习MySQL操作语句时,使用一条完全没有错误的语句: update students set name='drake' where name='chuan'; 却报了如下错误: Error Co ...

  10. jQuery用法小结

    jQuery加载1.$(document).ready()2.添加css样式:单个:$("p").css("color","red"); 多 ...