QTTCP实现简单的通信示例_第1页
QTTCP实现简单的通信示例_第2页
QTTCP实现简单的通信示例_第3页
QTTCP实现简单的通信示例_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第QTTCP实现简单的通信示例本文实例为大家分享了QTTCP实现简单通信示例的具体代码,供大家参考,具体内容如下

TCP服务端:

第一步:创建监听套接字的QTcpSever

QTcpServer*m_tsTcpServer;

第二步:listen------监听是否有新的连接进来

intiMyport;如果有新的客户端连接的话,会触发信号newConnection(),定义一个槽函数接收连接好的套接字.

//监听的端口号

iMyport=iPort;

//判断是否接收到了新的连接

if(m_tsTcpServer-listen(QHostAddress::Any,iMyport))

{

connect(m_tsTcpServer,SIGNAL(newConnection()),this,SLOT(slotServerNewConnection()));

}

else

{

qDebug()"serverlistenerror";

}

第三步:取出套接字

QTcpSocket*m_tsTcpSocket;如果客户端有消息进来的话,会触发信号readyRead();断开连接的话会触发disconnected();

//获得连接客户端的SOCKET套接字

m_tsTcpSocket=m_tsTcpServer-nextPendingConnection();

//获取对方的IP和端口

QStringsIp=m_tsTcpSocket-peerAddress().toString();

quint16sPort=m_tsTcpSocket-peerPort();

qDebug()sIpsPort;

connect(m_tsTcpSocket,SIGNAL(readyRead()),this,SLOT(slotServerReadData()));

connect(m_tsTcpSocket,SIGNAL(disconnected()),this,SLOT(slotServerDisConnection()));

第四步:读取套接字的内容

//从socket中读出数据

QByteArraybaArray=m_tsTcpSocket-readAll();

QStringsMsg=baArray;

到此服务端简单的通信搭建就完成了.

TCP客户端:

第一步:创建套接字,与服务端的IP地址和端口号连接.注:这里的端口号和上面服务端绑定的那个端口号是一样的,别搞错了.

//连接服务端

m_tsTcpSocket-connectToHost(sIP,iPort);

//成功连接返回true,错误返回false

if(m_tsTcpSocket-waitForConnected())

{

qDebug()"connectsuccess";

}

//成功连接会触发槽函数如果在找在这个槽函数里写write的话只能写一次,所以可以等连接成功后自己把写的函数放在自己想要发送的模块

//connect(m_tsTcpSocket,SIGNAL(connected()),this,SLOT(slotConnectedSuccess()));

第二步:连接成功后就可以直接向服务端发消息了.

QStringstr;

intiSize=m_tsTcpSocket-write(str.toUtf8().data());//返回字节的大小

//等待write写完再写下一次的write

if(!m_tsTcpSocket-waitForBytesWritten(50000))

{

return;

}

//判断发送是否成功

if(iSize==-1)

{

qDebug()"writeerror";

return;

}

到此客户端的简单通信就搭建好了.

若要多次向服务端发消息,可以while循环或者是其他.在这里要注意如果要多次发消息的话,waitForBytesWritten()这个函数是必不可少的,不然多次的话可能通信会失败.

注:write()函数和被触发的读的readyRead()信号并不是一一对应的,比如可能你客户端write了三次,服务端那边的readyRead可能才被触发一次.

想要了解详细的原因可以自己再去了解.

同理服务端向客服端发消息的话直接发送就可,服务端要收消息的话也是直接读就好,因为连接已经成功了.

相信小聪明脑袋瓜的你能懂的.

补充:客户端主动断开服务的连接

voidTcpClient::disConnectSever()

//方式一

m_tcpSocket-flush();

m_tcpSocket-disconnectFromHost();

//方式二

m_tcpSocket-abort();

}

注:方式二abor

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论