From e71f5ac6630686f3bd92817b401ed8d88e121f6d Mon Sep 17 00:00:00 2001 From: Niklas Date: Wed, 6 Jul 2011 16:56:16 +0200 Subject: added the two tryout with a qt LogReceiver and a c code client --- workspace/LogReceiver/LogReceiver | Bin 0 -> 30954 bytes workspace/LogReceiver/LogReceiver.pro | 10 ++++ workspace/LogReceiver/logreceiver.cpp | 70 ++++++++++++++++++++++++ workspace/LogReceiver/logreceiver.h | 34 ++++++++++++ workspace/LogReceiver/logreceiver.ui | 19 +++++++ workspace/LogReceiver/main.cpp | 12 +++++ workspace/LogWriter/LogWriter | Bin 0 -> 30747 bytes workspace/LogWriter/LogWriter.pro | 10 ++++ workspace/LogWriter/logwriter.cpp | 97 ++++++++++++++++++++++++++++++++++ workspace/LogWriter/logwriter.h | 47 ++++++++++++++++ workspace/LogWriter/logwriter.ui | 19 +++++++ workspace/LogWriter/main.cpp | 12 +++++ 12 files changed, 330 insertions(+) create mode 100755 workspace/LogReceiver/LogReceiver create mode 100644 workspace/LogReceiver/LogReceiver.pro create mode 100644 workspace/LogReceiver/logreceiver.cpp create mode 100644 workspace/LogReceiver/logreceiver.h create mode 100644 workspace/LogReceiver/logreceiver.ui create mode 100644 workspace/LogReceiver/main.cpp create mode 100755 workspace/LogWriter/LogWriter create mode 100644 workspace/LogWriter/LogWriter.pro create mode 100644 workspace/LogWriter/logwriter.cpp create mode 100644 workspace/LogWriter/logwriter.h create mode 100644 workspace/LogWriter/logwriter.ui create mode 100644 workspace/LogWriter/main.cpp diff --git a/workspace/LogReceiver/LogReceiver b/workspace/LogReceiver/LogReceiver new file mode 100755 index 0000000..16bcf4b Binary files /dev/null and b/workspace/LogReceiver/LogReceiver differ diff --git a/workspace/LogReceiver/LogReceiver.pro b/workspace/LogReceiver/LogReceiver.pro new file mode 100644 index 0000000..3a2d3f9 --- /dev/null +++ b/workspace/LogReceiver/LogReceiver.pro @@ -0,0 +1,10 @@ +TEMPLATE = app +TARGET = LogReceiver + +QT += core gui network + +HEADERS += logreceiver.h +SOURCES += main.cpp \ + logreceiver.cpp +FORMS += logreceiver.ui +RESOURCES += diff --git a/workspace/LogReceiver/logreceiver.cpp b/workspace/LogReceiver/logreceiver.cpp new file mode 100644 index 0000000..9bca304 --- /dev/null +++ b/workspace/LogReceiver/logreceiver.cpp @@ -0,0 +1,70 @@ + #include + #include + + #include + + #include "logreceiver.h" + #include + #include + + +LogReceiver::LogReceiver(QWidget *parent) : + QDialog(parent) { + ui.setupUi(this); + + statusLabel = new QLabel; + quitButton = new QPushButton(tr("Quit")); + quitButton->setAutoDefault(false); + + server = new QLocalServer(this); + if (!server->listen("/var/tmp/qt_c_socket_test")) { + QMessageBox::critical(this, tr("LogReceiver"), tr( + "Unable to start the server: %1.") .arg(server->errorString())); + close(); + return; + } + + statusLabel->setText(tr("The server is running.\n" + "Run the C Client example now.")); + + connect(quitButton, SIGNAL(clicked()), this, SLOT(close())); + connect(server, SIGNAL(newConnection()), this, SLOT(handleNewConnection())); + + QHBoxLayout *buttonLayout = new QHBoxLayout; + buttonLayout->addStretch(1); + buttonLayout->addWidget(quitButton); + buttonLayout->addStretch(1); + + QVBoxLayout *mainLayout = new QVBoxLayout; + mainLayout->addWidget(statusLabel); + mainLayout->addLayout(buttonLayout); + setLayout(mainLayout); + + setWindowTitle(tr("Fortune Server")); +} + +LogReceiver::~LogReceiver() { + +} + + + void LogReceiver::handleNewConnection() + { + qDebug() << "New Connection arrived"; + + clientSocket = server->nextPendingConnection(); + connect(clientSocket, SIGNAL(disconnected()), + clientSocket, SLOT(deleteLater())); + connect(clientSocket, SIGNAL(readyRead()), this, SLOT(handleNewInput())); + } + + void LogReceiver::handleNewInput() { + + QByteArray data = clientSocket->readAll(); + + QString logMsg(data); + qDebug() << logMsg; + + statusLabel->setText(logMsg); +} + diff --git a/workspace/LogReceiver/logreceiver.h b/workspace/LogReceiver/logreceiver.h new file mode 100644 index 0000000..6b94eab --- /dev/null +++ b/workspace/LogReceiver/logreceiver.h @@ -0,0 +1,34 @@ +#ifndef LOGRECEIVER_H +#define LOGRECEIVER_H + +#include +#include +#include "ui_logreceiver.h" + +class QLabel; +class QPushButton; +class QLocalServer; +class QLocalSocket; + +class LogReceiver: public QDialog { +Q_OBJECT + +public: + LogReceiver(QWidget *parent = 0); + ~LogReceiver(); + +private slots: + void handleNewConnection(); + void handleNewInput(); + +private: + Ui::LogReceiverClass ui; + QLabel *statusLabel; + QPushButton *quitButton; + QLocalServer *server; + QStringList fortunes; + QLocalSocket *clientSocket; + quint16 blockSize; +}; + +#endif // LOGRECEIVER_H diff --git a/workspace/LogReceiver/logreceiver.ui b/workspace/LogReceiver/logreceiver.ui new file mode 100644 index 0000000..9143194 --- /dev/null +++ b/workspace/LogReceiver/logreceiver.ui @@ -0,0 +1,19 @@ + + LogReceiverClass + + + + 0 + 0 + 400 + 300 + + + + LogReceiver + + + + + + diff --git a/workspace/LogReceiver/main.cpp b/workspace/LogReceiver/main.cpp new file mode 100644 index 0000000..e545906 --- /dev/null +++ b/workspace/LogReceiver/main.cpp @@ -0,0 +1,12 @@ +#include "logreceiver.h" + +#include +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + LogReceiver w; + w.show(); + return a.exec(); +} diff --git a/workspace/LogWriter/LogWriter b/workspace/LogWriter/LogWriter new file mode 100755 index 0000000..bfcb726 Binary files /dev/null and b/workspace/LogWriter/LogWriter differ diff --git a/workspace/LogWriter/LogWriter.pro b/workspace/LogWriter/LogWriter.pro new file mode 100644 index 0000000..112fd84 --- /dev/null +++ b/workspace/LogWriter/LogWriter.pro @@ -0,0 +1,10 @@ +TEMPLATE = app +TARGET = LogWriter + +QT += core gui network + +HEADERS += logwriter.h +SOURCES += main.cpp \ + logwriter.cpp +FORMS += logwriter.ui +RESOURCES += diff --git a/workspace/LogWriter/logwriter.cpp b/workspace/LogWriter/logwriter.cpp new file mode 100644 index 0000000..53a4023 --- /dev/null +++ b/workspace/LogWriter/logwriter.cpp @@ -0,0 +1,97 @@ +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "logwriter.h" + +LogWriter::LogWriter(QWidget *parent) : + QDialog(parent) { + hostLabel = new QLabel(tr("Message:")); + hostLineEdit = new QLineEdit("fortune"); + + serverName = "/var/tmp/qt_c_socket_test"; + + hostLabel->setBuddy(hostLineEdit); + + statusLabel = new QLabel(tr("This examples requires that you run the " + "LogReceiver example as well.")); + + connectToLogReceiver = new QPushButton(tr("Connect")); + connectToLogReceiver->setDefault(true); + + quitButton = new QPushButton(tr("Quit")); + + writeButton = new QPushButton(tr("Write")); + + buttonBox = new QDialogButtonBox; + buttonBox->addButton(connectToLogReceiver, QDialogButtonBox::ActionRole); + buttonBox->addButton(quitButton, QDialogButtonBox::RejectRole); + buttonBox->addButton(writeButton, QDialogButtonBox::ActionRole); + + connect(hostLineEdit, SIGNAL(textChanged(QString)), this, + SLOT(enableWriteButton())); + connect(connectToLogReceiver, SIGNAL(clicked()), this, + SLOT(requestNewFortune())); + connect(quitButton, SIGNAL(clicked()), this, SLOT(close())); + connect(writeButton, SIGNAL(clicked()), this, SLOT(writeToLogReceiver())); + + QGridLayout *mainLayout = new QGridLayout; + mainLayout->addWidget(hostLabel, 0, 0); + mainLayout->addWidget(hostLineEdit, 0, 1); + mainLayout->addWidget(statusLabel, 2, 0, 1, 2); + mainLayout->addWidget(buttonBox, 3, 0, 1, 2); + setLayout(mainLayout); + + setWindowTitle(tr("Fortune Client")); + hostLineEdit->setFocus(); +} + +LogWriter::~LogWriter() { + +} + +void LogWriter::requestNewFortune() { + struct sockaddr_un serv_addr; + + connectToLogReceiver->setEnabled(false); + + + sockfd = socket(AF_UNIX, SOCK_STREAM, 0); + if (sockfd < 0) + qDebug() << "ERROR opening socket" << strerror(errno); + serv_addr.sun_family = AF_UNIX; + strcpy(serv_addr.sun_path, "/var/tmp/qt_c_socket_test"); + + + if (::connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) + qDebug() << "ERROR connecting" << strerror(errno); +} + +void LogWriter::readFortune() { + +} + +void LogWriter::displayError(QLocalSocket::LocalSocketError socketError) { + +} + +void LogWriter::enableWriteButton() { + writeButton->setEnabled(!hostLineEdit->text().isEmpty()); +} + +void LogWriter::writeToLogReceiver() { + + //char buffer[256]; + char *b = "test"; + qDebug() << strlen(b); + int n = ::write(sockfd,b,strlen(b)); + if (n < 0) + qDebug() <<"ERROR writing to socket"; + +} diff --git a/workspace/LogWriter/logwriter.h b/workspace/LogWriter/logwriter.h new file mode 100644 index 0000000..1646433 --- /dev/null +++ b/workspace/LogWriter/logwriter.h @@ -0,0 +1,47 @@ +#ifndef LOGWRITER_H +#define LOGWRITER_H + +#include +#include +#include "ui_logwriter.h" + +class QDialogButtonBox; +class QLabel; +class QLineEdit; +class QPushButton; +class QLocalSocket; + +class LogWriter: public QDialog { +Q_OBJECT + +public: + LogWriter(QWidget *parent = 0); + ~LogWriter(); + +private slots: + void requestNewFortune(); + void readFortune(); + void displayError(QLocalSocket::LocalSocketError socketError); + void enableWriteButton(); + void writeToLogReceiver(); + +private: + Ui::LogWriterClass ui; + QLabel *hostLabel; + QLineEdit *hostLineEdit; + QLabel *statusLabel; + QPushButton *connectToLogReceiver; + QPushButton *quitButton; + QPushButton *writeButton; + QDialogButtonBox *buttonBox; + + QString currentFortune; + quint16 blockSize; + QString serverName; + + int sockfd; + +}; + +#endif // LOGWRITER_H + diff --git a/workspace/LogWriter/logwriter.ui b/workspace/LogWriter/logwriter.ui new file mode 100644 index 0000000..aebeb33 --- /dev/null +++ b/workspace/LogWriter/logwriter.ui @@ -0,0 +1,19 @@ + + LogWriterClass + + + + 0 + 0 + 400 + 300 + + + + LogWriter + + + + + + diff --git a/workspace/LogWriter/main.cpp b/workspace/LogWriter/main.cpp new file mode 100644 index 0000000..5695d76 --- /dev/null +++ b/workspace/LogWriter/main.cpp @@ -0,0 +1,12 @@ +#include "logwriter.h" + +#include +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + LogWriter w; + w.show(); + return a.exec(); +} -- cgit v1.2.3-55-g7522