From: Torste Aikio Date: Wed, 23 Jun 2010 11:47:38 +0000 (+0300) Subject: QSocket --> BSD sockets X-Git-Url: http://vcs.maemo.org/git/?p=irwi;a=commitdiff_plain;h=97cb117757012dfb7c7a71a7f75f06a0f6a35b88 QSocket --> BSD sockets Does not work yet! --- diff --git a/src/irctrl.cpp b/src/irctrl.cpp index bf0b89e..94c6329 100644 --- a/src/irctrl.cpp +++ b/src/irctrl.cpp @@ -1,8 +1,16 @@ #include +#include +#include +#include +#include +#include +#include + #include -#include -#include +#include +#include +#include #include "irctrl.h" @@ -31,18 +39,29 @@ void IrCtrl::sendCmd(const QString &cmd) m_killLircTimer.stop(); } - QTcpSocket sock; - QSettings settings(this); - sock.setSocketOption(QAbstractSocket::LowDelayOption, 1); - sock.connectToHost(QHostAddress::LocalHost, - settings.value("lircPort", LIRC_PORT).toInt(), - QIODevice::WriteOnly | QIODevice::Unbuffered); - sock.waitForConnected(); + QSettings settings; QString remoteName = settings.value("remoteName", "").toString(); QString cmdStr = "SEND_ONCE " + remoteName + " " + cmd + "\n"; - sock.write(cmdStr.toAscii()); - sock.waitForBytesWritten(); - sock.close(); + QByteArray buf = cmdStr.toAscii(); + + sockaddr_in addr; + memset(&addr, 0, sizeof(addr)); + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = INADDR_LOOPBACK; + addr.sin_port = LIRC_PORT; + int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + if (sock == -1) { + qDebug() << "Socket open fail"; + } else { + int c = ::connect(sock, (sockaddr*)&addr, sizeof(sockaddr_in)); + if (c == 0) { + write(sock, buf.constData(), buf.count()); + } else { + qDebug() << "Connect fail"; + } + shutdown(sock, SHUT_RDWR); + close(sock); + } m_killLircTimer.start(); }