QT socket 服务器端代码
来源:互联网 发布:办公楼网络布线图视频 编辑:程序博客网 时间:2024/06/10 15:41
#ifndef TCPCLIENT_H
#define TCPCLIENT_H
#include <QTcpSocket>
namespace QTTCP
{
class TcpClient : public QTcpSocket
{
Q_OBJECT
public:
explicit TcpClient(QObject *parent = 0);
signals:
void dataRevS(QString, int, int);
void disConnectS(int);
public slots:
void dataRev();
void disConnect();
};
}//namespace QTTCP
#endif // TCPCLIENT_H
#include "tcpclient.h"#include <memory>namespace QTTCP{TcpClient::TcpClient(QObject *parent) :QTcpSocket(parent){connect(this, SIGNAL(readyRead()), this, SLOT(dataRev()));connect(this, SIGNAL(disconnected()), this, SLOT(disConnect()));}void TcpClient::dataRev(){while(bytesAvailable()>0){
int size = bytesAvailable();//std::auto_ptr<char > p(new char(size));char buffer[1024];read(buffer, size);QString str = buffer;int n = str.size();emit dataRevS(str, size, this->socketDescriptor());}
}void TcpClient::disConnect(){int x = this->socketDescriptor();emit disConnectS(x);}}//namespace QTTCP
#ifndef TCPSERVER_H#define TCPSERVER_H#include <QTcpServer>#include "tcpclient.h"namespace QTTCP{class TcpServer : public QTcpServer{Q_OBJECTpublic:
explicit TcpServer(int port, QObject *parent = 0);
signals:
void updateUi(QString, int);void connectedS(QString);void disconnectS(QString);public slots:void updateClient(QString, int, int);void disConnect(int);void send(QString, QString);protected:
void incomingConnection(int socketDescriptor );private:
QMap<int, TcpClient *> m_pClientMap;};}//namespace QTTCP
#endif // TCPSERVER_H
#include "tcpserver.h"namespace QTTCP{TcpServer::TcpServer(int port, QObject *parent) :QTcpServer(parent){listen(QHostAddress::Any, port);}void TcpServer::incomingConnection(int socketDescriptor ){TcpClient *client = new TcpClient();connect(client, SIGNAL(dataRevS(QString,int, int)), this, SLOT(updateClient(QString,int,int)));connect(client, SIGNAL(disConnectS(int)), this, SLOT(disConnect(int)));client->setSocketDescriptor(socketDescriptor);m_pClientMap.insert(socketDescriptor, client);QString str = client->peerAddress().toString() + ":" + "连接成功";emit connectedS(str);}void TcpServer::updateClient(QString msg, int size, int des){QString allmsg;allmsg = m_pClientMap[des]->peerAddress().toString();allmsg.push_back("\n");allmsg.push_back(msg);
emit updateUi(allmsg, size);}void TcpServer::disConnect(int des){for(auto it = m_pClientMap.begin(); it != m_pClientMap.end(); ++it){
if((*it)->socketDescriptor() == des){
QString str = (*it)->peerAddress().toString();str += "\n";str += "断开连接";emit disconnectS(str);m_pClientMap.erase(it);break;}
}
}void TcpServer::send(QString ip, QString msg){for(auto it= m_pClientMap.begin(); it != m_pClientMap.end(); ++it){
if((*it)->peerAddress().toString() == ip){
(*it)->write(msg.toLatin1(), msg.size());break;}
}
}}//namespace QTTCP
0 0
- QT socket 服务器端代码
- socket服务器端代码实例
- Socket服务器端的代码
- socket的服务器端测试代码
- SOCKET udp 服务器端代码实现
- C# Socket通信 客户端 服务器端代码
- Java Socket通信 客户端服务器端基本代码
- Flash Socket安全问题的 服务器端代码 策略文件 flash socket
- SOCKET 服务器端
- socket服务器端
- socket服务器端
- socket服务器端
- Socket服务器端
- .net中的socket异步通信实现--服务器端代码
- 聊天室初步代码(socket客户端和服务器端源代码)~
- Java socket编程服务器端/客户端代码编写示例
- Socket网络编程—简单聊天软件--2、服务器端代码
- linux socket 客户端和服务器端 基础框架代码
- Ubuntu JAVA安装与配置
- 《剑指offer》用两个队列实现栈 Java版实现
- 查看Linux服务器内存使用情况
- 关于桥接
- React组件生命周期
- QT socket 服务器端代码
- Linux常见命令
- 深入理解Redis主键失效原理及实现机制
- 二叉树的镜像
- 解决一则ORA-00600[kcratr_nab_less_than_odr]的故障
- C#的一些零散东西
- 自旋锁
- Linux下创建用户组报错;不能进去oracle
- Nova创建虚拟机实例过程简述