QT 服务端代码:
.h
#ifndef LOCALSERVER_H #define LOCALSERVER_H #include <QObject> #include <QtNetwork> class LocalServer : public QObject { Q_OBJECT public: explicit LocalServer(QObject *parent = nullptr); ~LocalServer(); bool RunServer(QString name); signals: public slots: void serverNewConnectionHandler(); void socketReadyReadHandler(); private: QLocalServer *m_localServer; QLocalSocket *m_socket; }; #endif // LOCALSERVER_H
.cpp
#include "localserver.h" #include <QDebug> LocalServer::LocalServer(QObject *parent) : QObject(parent), m_localServer(nullptr), m_socket(nullptr) { m_localServer = new QLocalServer(); connect(m_localServer, &QLocalServer::newConnection, this, &LocalServer::serverNewConnectionHandler); } LocalServer::~LocalServer() { m_localServer->close(); delete m_localServer; } bool LocalServer::RunServer(QString name) {
// "/tmp/echo.sock" QLocalServer::removeServer(name); return m_localServer->listen(name); } void LocalServer::serverNewConnectionHandler() { qDebug() << "new connction"; m_socket = m_localServer->nextPendingConnection(); connect(m_socket, &QLocalSocket::readyRead, this, &LocalServer::socketReadyReadHandler); connect(m_socket, &QLocalSocket::disconnected, m_socket, &QLocalSocket::deleteLater); connect(m_socket, &QLocalSocket::disconnected, [=]() { qDebug() << "disconnected"; }); } void LocalServer::socketReadyReadHandler() { QTextStream stream(m_socket); qDebug() << "DATA:" << stream.readAll(); }
nodejs 服务端代码:
let net = require('net');
let path = require('path');
let server = net.createServer(function (connect) {
connect.on('error',function(err){
console.log('socket error:' + err);
connect.end();
});
connect.on('close',function(data){
console.log('client closed:', data);
});
connect.on("data",function (data) {
console.log('data:', data);
})
}).listen(path.join('\\?\pipe','\tmp\echo.sock'));
server.on("error",function(err){
console.log("error:" + err);
});
nodejs 客户端代码:
let net = require('net');
let path = require('path');
let client = new net.Socket();
let strPath = path.join('\\?\pipe', '/tmp/echo.sock');
console.log(strPath);
client.connect(strPath, () => {
console.log("已连接到服务器");
})
client.on('data', (data) => {
console.log('data:', data.toString());
})
client.on('close', () => {
console.log('Connection closed');
})
client.on('end', () => {
console.log('已从服务器断开');
})
client.on('error', (err) => {
console.log("err:", err);
})