LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2357|回复: 0

我的TCP Socket测试用例(QT环境)

[复制链接]
发表于 2009-11-4 11:46:47 | 显示全部楼层 |阅读模式
main.cpp
  1. #include <QApplication>
  2. #include "dialog.h"

  3. int main(int argc, char *argv[])
  4. {
  5.         QApplication app(argc, argv);
  6.         Dialog d;
  7.         d.show();
  8.         return app.exec();
  9. }
复制代码


dialog.h


  1. #ifndef DIALOG_H
  2. #define DIALOG_H

  3. #include <QTcpSocket>
  4. #include <QDialog>
  5. #include "ui_dialog.h"

  6. class Dialog: public QDialog, public Ui_Dialog
  7. {
  8.         Q_OBJECT
  9.         public:
  10.                 Dialog(QWidget *parent = 0);

  11.         private slots:
  12.                 void sendMsg();
  13.                 void recvMsg();
  14.                 void error();

  15.         private:
  16.                 QTcpSocket *tcpSocket;
  17.                 QString msgBuffer;
  18. };

  19. #endif

复制代码




dialog.cpp

  1. #include <QHostAddress>
  2. #include <QMessageBox>
  3. #include <QTextCodec>
  4. #include "dialog.h"

  5. Dialog::Dialog(QWidget *parent) : QDialog(parent)
  6. {
  7.         setupUi(this);
  8.         tcpSocket = new QTcpSocket(this);

  9.         connect(pushButton, SIGNAL(clicked()), this, SLOT(sendMsg()));
  10.         connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(recvMsg()));
  11.         connect(tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(error()));

  12.         //tcpSocket->connectToHost(QHostAddress::LocalHost, 8000);
  13.         tcpSocket->connectToHost(QHostAddress("192.168.1.160"), 8000);
  14. }

  15. void Dialog::sendMsg()
  16. {
  17.         QTextStream out(tcpSocket);
  18.         out << lineEdit->text()<< endl;
  19.         lineEdit->clear();
  20. }

  21. void Dialog::recvMsg()
  22. {
  23.         if (!tcpSocket->canReadLine()) return;

  24.         QString responseLine;
  25.         do {
  26.                 QTextCodec *codec = QTextCodec::codecForName("UTF-8");
  27.                 QByteArray qba = tcpSocket->readLine();
  28.                 responseLine += codec->toUnicode(qba);
  29.         } while (tcpSocket->canReadLine());

  30.         msgBuffer += responseLine;

  31.         textBrowser->setText(msgBuffer);
  32.         textBrowser->moveCursor(QTextCursor::End);
  33. }

  34. void Dialog::error()
  35. {
  36.         QMessageBox::critical(this, "socket error", tcpSocket->errorString());
  37.         tcpSocket->close();
  38. }

复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表