Qt TCP之Server/Client/Socket信号、槽等总结
来源:互联网 发布:连接其它机器的mysql 编辑:程序博客网 时间:2024/05/21 19:21
mySocket类
自己封装的mySocket类,继承自QTcpSocket类。
常用的socket类的信号
- disconnected() socket连接断开时触发
- readyRead() 当有数据来到时触发该槽函数
常用的socket类的函数
- connectToHost(serverIP,serverPort) 向服务器发起连接 指定IP和端口
Server类
自己封装的Server类,继承自QTcpServer类。生成实例化对象myTcpServer,然后对端口6666进行监听。如果在mainWindow中生成该实例化对象进行监听,总是监听不到端口,如果在main中生成实例话对象就可以,原因不清楚….监听:
Server myTcpServer; if(!myTcpServer.listen(QHostAddress::Any,port_ID)) //port_ID 6666 { qDebug()<<myTcpServer.errorString(); }
在自己封装的Server类中去重写incomingConnection()函数,当监听到6666端口有新连接到来时,就会去执行incomingConnection()函数,就像keyPressEvent(QKeyEvent *eKey)函数一样,按下按键就自己去执行了。
void Server::incomingConnection(qintptr socketDescriptor){ qDebug()<<"new connection...."; mySocket *tempSocket = new mySocket; //将线程的父类设为连接的,防止内存泄露 QThread *tempThread = new QThread(tempSocket); if(!tempSocket->setSocketDescriptor(socketDescriptor)) { qDebug()<<tempSocket->errorString(); return; } qDebug()<<"client IP is "<<(tempSocket->peerAddress().toString());//客户端IP tempSocket->clientIP = tempSocket->peerAddress().toString(); getClientNum(tempSocket); connect(tempSocket,SIGNAL(disconnected()),tempThread,SLOT(quit()));//socket断开连接时,线程退出 connect(tempSocket,SIGNAL(disconnected()),tempSocket,SLOT(emitCrashSignal())); connect(tempSocket,SIGNAL(crashSocket(mySocket*)),this,SLOT(destorySocket(mySocket*)));connect(this,SIGNAL(newConnection()),tempSocket,SLOT(sendConnectSuccess()));//连接成功,告诉客户端 tempSocket->moveToThread(tempThread); tempThread->start();//开启线程}
其中的tempSocket->setSocketDescriptor(socketDescriptor)将socketDescriptor(该socket的描述符)从Server中传到new出来的tempsocket中。
函数中有四个信号和槽的连接,其中属于QTcpServer类的信号是newConnection,当有客户端和服务器建立起新的连接时,触发该信号。槽函数是自己实现的,向客户端发送一条消息,告诉客户端已经建立连接。
另外,还将每个socket移入到一个新的线程中去,当连接断开时,线程自动退出,利用socket的disconnected信号和Qthread的quit槽函数实现。
阅读全文
0 0
- Qt TCP之Server/Client/Socket信号、槽等总结
- TCP Socket Server Client
- Qt中Tcp:Server、Client
- QT Socket编程--TCP Server
- Simple TCP Server Client Socket C
- socket——tcp-nonblocking-server-client
- 信号client信号server
- QT总结之信号与槽
- 基于Linux的SOCKET编程之TCP半双工Client-Server聊天程序
- 基于Linux的Socket编程之TCP全双工Server-Client聊天程序
- 基于Linux的SOCKET编程之TCP半双工Client-Server聊天程序
- 基于Linux的Socket编程之TCP全双工Server-Client聊天程序
- Qt 信号槽总结
- 使用Socket编写Client-Server通信总结
- 1Boost之TCP,Client and Server
- Qt 之 信号槽
- C socket TCP/UDP client/server example codes
- 网络套接字socket(tcp、server、client)
- java 异常处理规范
- js倒计时小程序
- hadoop架构详解(hdfs,yarn,mpreduce)
- EasyNVR网页/微信播放RTSP摄像机HLS/RTMP播放时出现起播等待问题的优化过程
- Sublime text 3 插件设置
- Qt TCP之Server/Client/Socket信号、槽等总结
- PS技巧二--------钢笔工具制作炫光
- 新人上手TensorFlow 之 Normalization
- python子类调用父类的方法
- 【MyEclipse】myeclipse和mysql的字符编码都设置为utf-8,插入中文依然显示问号
- Android面试——事件的传递机制
- Linux:信号量
- 浅谈Java中static的使用
- 设计模式之pimpl惯用法C++版