Qt QTcpServer/QTcpSocke

server


#ifndef LOCALSOCKET_H
#define LOCALSOCKET_H


#include <QtGui/QMainWindow>
#include "ui_localsocket.h"
#include <QLocalServer>
#include <QListWidget>
#include <QTcpServer>


class localsocket : public QMainWindow
{
Q_OBJECT


public:
localsocket(QWidget *parent = 0, Qt::WFlags flags = 0);
~localsocket();


public slots:
void newConnection();


void readyRead();


private:
Ui::localsocketClass ui;


    QLocalServer *m_server;


QListWidget *listWidget;


QTcpServer *m_tcpServer;


};


#endif // LOCALSOCKET_H





#include "localsocket.h"

#include <qlocalserver.h>
#include <qlocalsocket.h>
#include <QDebug>
#include <QTcpSocket>


localsocket::localsocket(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);


//m_server = new QLocalServer(this);


// m_server->listen("test");


//connect(m_server, SIGNAL(newConnection()), this, SLOT(newConnection()));


//listWidget = new QListWidget;
//setCentralWidget(listWidget);
//listWidget->setAutoScroll(true);


m_tcpServer = new QTcpServer(this);


m_tcpServer->listen(QHostAddress::Any,19999); //监听任何连上19999端口的ip  


connect(m_tcpServer,SIGNAL(newConnection()),this,SLOT(newConnection())); //新连接信号触发,调用newConnect()槽函数,这个跟信号函数一样,其实你可以随便取。


}


localsocket::~localsocket()
{


}


void localsocket::newConnection()
{
QTcpSocket *newsocket = m_tcpServer->nextPendingConnection(); 

connect(newsocket,SIGNAL(readyRead()),this,SLOT(readyRead()));
}


void localsocket::readyRead()
{
QTcpSocket *local = (QTcpSocket *)(sender()); 

QByteArray qba= local->readAll(); //读取  

qDebug()<<qba;  

QString ss=QVariant(qba).toString();  




取得是哪个localsocket可以读数据了
//QLocalSocket *local = static_cast<QLocalSocket *>(sender()); 
//if (!local)
// return;
//
//char buf[200];


//int nTmp = local->size();


//QByteArray arr = local->readAll();






//QTextStream in(local);
//QString     readMsg;
读出数据
//readMsg = in.readAll();


readMsg = in.read(6);


local->readData()


listWidget->addItem(arr.data());


listWidget->scrollToBottom();


listWidget->setCurrentRow(listWidget->count() - 1); 


//qDebug(arr);


发送收到数据信号

emit newMessage(readMsg);

}


#include "localsocket.h"
#include <QtGui/QApplication>


int main(int argc, char *argv[])
{
QApplication a(argc, argv);
localsocket w;
w.show();
return a.exec();
}


client

#include "localsocketclient.h"
#include <QtGui/QApplication>
#include <QLocalSocket>
#include <Windows.h>
#include <QThread>
#include "workerthread.h"
#include <QTcpSocket>


int main(int argc, char *argv[])
{
QApplication a(argc, argv);

QTcpSocket *m_tcpSocket = new QTcpSocket(NULL);  
m_tcpSocket->abort();  
m_tcpSocket->connectToHost("127.0.0.1",19999);  


int i = 0;

workerthread thread(NULL);


while (m_tcpSocket->waitForConnected())
{
QString ss = QString::number(i) + "TTTTTTTTTT";

m_tcpSocket->write(ss.toStdString().c_str(),strlen(ss.toStdString().c_str()));

//m_tcpSocket->waitForBytesWritten();


m_tcpSocket->flush();


i++;

Sleep(20);
}







//QLocalSocket ls;
//ls.connectToServer("test");


//int i = 0;


workerthread work(NULL);


//while (ls.waitForConnected())
//{
// QString message = QString::number(i) + "TTTTTTTTTT";


// //ls.write( message.toStdString().c_str(), message.length());


// ls.write(message.toStdString().c_str(), message.length());


// ls.flush();


// message.clear();


// //ls.waitForBytesWritten();


// Sleep(20);


// i++;
//}


return a.exec();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金士顿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值