QT制作UDP通讯小软件

QT制作UDP通讯小软件

1,主界面

QT制作UDP通讯小软件 

2,代码部分

 


  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. #include
  4. QString MainWindow::getLocalIP()
  5. {
  6. QString hostName=QHostInfo::localHostName();//本地主机名
  7. QHostInfo hostInfo=QHostInfo::fromName(hostName);
  8. QString localIP="";
  9. QList addList=hostInfo.addresses();//
  10. if (!addList.isEmpty())
  11. for (int i=0;icount();i++)
  12. {
  13. QHostAddress aHost=addList.at(i);
  14. if (QAbstractSocket::IPv4Protocol==aHost.protocol())
  15. {
  16. localIP=aHost.toString();
  17. break;
  18. }
  19. }
  20. return localIP;
  21. }
  22. MainWindow::MainWindow(QWidget *parent) :
  23. QMainWindow(parent),
  24. ui(new Ui::MainWindow)
  25. {
  26. ui->setupUi(this);
  27. LabSocketState=new QLabel("Socket状态:");//
  28. LabSocketState->setMinimumWidth(200);
  29. ui->statusBar->addWidget(LabSocketState);
  30. QString localIP=getLocalIP();//本机IP
  31. this->setWindowTitle(this->windowTitle()+"----本机IP:"+localIP);
  32. ui->comboTargetIP->addItem(localIP);
  33. udpSocket=new QUdpSocket(this);//用于与连接的客户端通讯的QTcpSocket
  34. connect(udpSocket,SIGNAL(stateChanged(QAbstractSocket::SocketState)),
  35. this,SLOT(onSocketStateChange(QAbstractSocket::SocketState)));
  36. onSocketStateChange(udpSocket->state());
  37. connect(udpSocket,SIGNAL(readyRead()),
  38. this,SLOT(onSocketReadyRead()));
  39. }
  40. MainWindow::~MainWindow()
  41. {
  42. udpSocket->abort();
  43. delete udpSocket;
  44. delete ui;
  45. }
  46. void MainWindow::onSocketStateChange(QAbstractSocket::SocketState socketState)
  47. {
  48. switch(socketState)
  49. {
  50. case QAbstractSocket::UnconnectedState:
  51. LabSocketState->setText("scoket状态:UnconnectedState");
  52. break;
  53. case QAbstractSocket::HostLookupState:
  54. LabSocketState->setText("scoket状态:HostLookupState");
  55. break;
  56. case QAbstractSocket::ConnectingState:
  57. LabSocketState->setText("scoket状态:ConnectingState");
  58. break;
  59. case QAbstractSocket::ConnectedState:
  60. LabSocketState->setText("scoket状态:ConnectedState");
  61. break;
  62. case QAbstractSocket::BoundState:
  63. LabSocketState->setText("scoket状态:BoundState");
  64. break;
  65. case QAbstractSocket::ClosingState:
  66. LabSocketState->setText("scoket状态:ClosingState");
  67. 来源:梁养浩

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月12日
下一篇 2022年1月12日

相关推荐