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();
}