当前位置:   article > 正文

C++ & QT Creator 开发网络调试助手_网络调试助手源码c++

网络调试助手源码c++

mainwindow.h

  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>
  4. QT_BEGIN_NAMESPACE
  5. namespace Ui { class MainWindow; }
  6. QT_END_NAMESPACE
  7. class MainWindow : public QMainWindow
  8. {
  9. Q_OBJECT
  10. public:
  11. MainWindow(QWidget *parent = nullptr);
  12. ~MainWindow();
  13. private slots:
  14. void on_radioButton_2_clicked(bool checked);
  15. void on_radioButton_clicked(bool checked);
  16. void on_pushButton_3_clicked();
  17. void on_pushButton_5_clicked();
  18. void on_radioButton_3_clicked(bool checked);
  19. private:
  20. Ui::MainWindow *ui;
  21. };
  22. #endif // MAINWINDOW_H

main.cpp

  1. #include "mainwindow.h"
  2. #include <QApplication>
  3. int main(int argc, char *argv[])
  4. {
  5. QApplication a(argc, argv);
  6. MainWindow w;
  7. w.show();
  8. return a.exec();
  9. }

mainwindow.cpp

  1. //UDP
  2. void MainWindow::on_radioButton_3_clicked(bool checked)
  3. {
  4. ui->pushButton_3->setText("打开");
  5. }
  6. //TCP服务器端
  7. void MainWindow::on_radioButton_2_clicked(bool checked)
  8. {
  9. if(checked){
  10. ui->pushButton_3->setText("开始监听");
  11. //关联信号与槽
  12. connect(server,&QTcpServer::newConnection,this,&MainWindow::accept_connect);
  13. }
  14. }
  15. //TCP客户端
  16. void MainWindow::on_radioButton_clicked(bool checked)
  17. {
  18. if(checked){
  19. ui->pushButton_3->setText("链接网络");
  20. //关联信号与槽
  21. connect(socket,&QTcpSocket::readyRead,this,&MainWindow::read_date);
  22. //取消新的链接请求
  23. disconnect(connect(server,&QTcpServer::newConnection,this,&MainWindow::accept_connect));
  24. //取消服务器的监听
  25. server->close();
  26. }
  27. }
  28. //链接网络与开始监听按钮
  29. void MainWindow::on_pushButton_3_clicked()
  30. {
  31. //TCP服务器
  32. if(ui->pushButton_3->text() == "开始监听")
  33. {
  34. //获取端口
  35. QString local_port = ui->lineEdit_port_1->text();
  36. //开始监听
  37. if(server->listen(QHostAddress::Any,local_port.toShort()))
  38. {
  39. ui->label_4->setText("正在监听");
  40. }else
  41. {
  42. ui->label_4->setText("监听失败");
  43. }
  44. }
  45. //TCP客户端
  46. if(ui->pushButton_3->text() == "链接网络")
  47. {
  48. //获取端口和IP
  49. QString ip = ui->lineEdit_ip_2->text();
  50. QString port = ui->lineEdit_port_2->text();
  51. //链接服务器
  52. socket->connectToHost(ip,port.toInt());
  53. }
  54. //判断是链接网络还是监听
  55. if(ui->pushButton_3->text() == "打开")
  56. {
  57. //获取端口和IP
  58. QString ip1 = ui->lineEdit_ip_1->text();
  59. QString port1 = ui->lineEdit_port_1->text();
  60. //建立连接
  61. udp->bind(QHostAddress::Any,port1.toInt());
  62. qDebug() << "Listening on port1 " << port1;
  63. connect(udp,&QUdpSocket::readyRead,this,&MainWindow::read_date);
  64. }
  65. }
  66. //新的链接请求
  67. void MainWindow::accept_connect()
  68. {
  69. int ret = QMessageBox::warning(this, tr("链接提示"),
  70. tr("有新的客户端链接是否接收请求\n"),
  71. QMessageBox::Yes|QMessageBox::No);
  72. if(ret == QMessageBox::Yes) //接收链接
  73. {
  74. new_socket = server->nextPendingConnection();
  75. qDebug() << new_socket->peerAddress().toString();
  76. //关联可读信号
  77. connect(new_socket,&QTcpSocket::readyRead,this,&MainWindow::read_date);
  78. }
  79. }
  80. //接收
  81. void MainWindow::read_date()
  82. {
  83. if (ui->pushButton_3->text() == "开始监听")
  84. {
  85. ui->plainTextEdit->appendPlainText(new_socket->readAll());
  86. }
  87. else if (ui->pushButton_3->text() == "链接网络")
  88. {
  89. ui->plainTextEdit->appendPlainText(socket->readAll());
  90. }
  91. // if (ui->pushButton_3->text() == "打开"){
  92. // qDebug() << "有数据可读";
  93. // //判断是否有网络数据
  94. // while (udp->hasPendingDatagrams()) {
  95. // //把所有数据读到 datagram
  96. // QNetworkDatagram datagram = udp->receiveDatagram();
  97. // //输出数据
  98. // qDebug() << datagram.senderAddress().toString();
  99. // qDebug() << datagram.senderPort();
  100. // qDebug() << datagram.data();
  101. // ui->plainTextEdit->appendPlainText(udp->readAll());
  102. // }
  103. // }
  104. if (ui->pushButton_3->text() == "打开"){
  105. char buf[1024]={0};
  106. QHostAddress ip;
  107. unsigned short port=0;
  108. udp->readDatagram(buf,1024,&ip,&port);
  109. ui->plainTextEdit->appendPlainText(buf);
  110. }
  111. }
  112. //发送
  113. void MainWindow::on_pushButton_5_clicked()
  114. {
  115. //服务器
  116. if(ui->pushButton_3->text() == "开始监听")
  117. {
  118. QString msg = ui->plainTextEdit_2->toPlainText();
  119. qDebug() << msg;
  120. new_socket->write(msg.toUtf8());
  121. }
  122. //客户端
  123. if(ui->pushButton_3->text() == "链接网络")
  124. {
  125. QString msg = ui->plainTextEdit_2->toPlainText();
  126. qDebug() << msg;
  127. socket->write(msg.toUtf8());
  128. }
  129. //UDP发送端
  130. if(ui->pushButton_3->text() == "打开")
  131. {
  132. QString ip2 = ui->lineEdit_ip_2->text();
  133. QString port2 = ui->lineEdit_port_2->text();
  134. QString msg = ui->plainTextEdit_2->toPlainText();
  135. udp->writeDatagram(msg.toUtf8(),QHostAddress(ip2),port2.toInt());
  136. }
  137. }

效果展示

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/583685
推荐阅读
相关标签
  

闽ICP备14008679号