QT网络编程:在同一个局域网下客户端与服务端不能进行通信

我吃你家大米了? 2018-09-29 03:05:22
在我的电脑上的时候客户端与服务端可以实现通信;

之后两台电脑连接无线网,一个电脑上运行客户端,另一个运行服务端;客户端与服务端之间无法通信

我用网络调试助手进行了测试,发现我的客户端并没有问题;

服务端有很大的问题,监听不到客户端的信号,而客户端却显示已连接

服务端代码如下:
  1. #include "severwidget.h"
  2. #include "ui_severwidget.h"

  3. SeverWidget::SeverWidget(QWidget *parent) :
  4. QWidget(parent),
  5. ui(new Ui::SeverWidget)
  6. {
  7. ui->setupUi(this);
  8. tcpserver = NULL;
  9. tcpsocket = NULL;
  10. setWindowTitle("服务器:8888");

  11. tcpserver = new QTcpServer(this);
  12. tcpserver->listen(QHostAddress("/*192.168.7.179*/127.0.0.1"),8888);
  13. connect(tcpserver,&QTcpServer::newConnection,
  14. [=]()
  15. {
  16. tcpsocket = tcpserver->nextPendingConnection();
  17. //获取IP
  18. QString ip = tcpsocket->peerAddress().toString();
  19. //获取端口号
  20. qint16 port = tcpsocket->peerPort();
  21. QString temp = QString("[%1:%2]:成功连接").arg(ip).arg(port);
  22. ui->textRead->setText(temp);

  23. connect(tcpsocket,&QTcpSocket::readyRead,
  24. [=]()
  25. {
  26. QString temp = QString("[%1:%2]:").arg(ip).arg(port);
  27. ui->textRead->setText(temp);
  28. QByteArray array = tcpsocket->readAll();
  29. ui->textRead->append(array);
  30. }
  31. );



  32. }
  33. );
  34. }

  35. SeverWidget::~SeverWidget()
  36. {
  37. delete ui;
  38. }

  39. void SeverWidget::on_ButtonSend_clicked()
  40. {
  41. if(tcpsocket == NULL)
  42. {
  43. return;
  44. }
  45. //获取编辑区内容 toPlainText()获取多行简单文本
  46. QString str = ui->textWrite->toPlainText();//获取窗口信息
  47. //发送信息 使用tcpsocket套接字
  48. tcpsocket->write(str.toUtf8().data());
  49. ui->textRead->setText("服务端:");
  50. ui->textRead->append(str);

  51. }

  52. void SeverWidget::on_ButtonClose_clicked()
  53. {
  54. if(tcpsocket == NULL)
  55. {
  56. return;
  57. }
  58. tcpsocket->disconnectFromHost();
  59. tcpsocket->close();
  60. tcpsocket = NULL;

  61. }


客户端代码如下:
  1. #include "clientwidget.h"
  2. #include "ui_clientwidget.h"
  3. #include <QHostAddress>

  4. ClientWidget::ClientWidget(QWidget *parent) :
  5. QWidget(parent),
  6. ui(new Ui::ClientWidget)
  7. {
  8. ui->setupUi(this);
  9. setWindowTitle("客户端");
  10. tcpsocket = NULL;
  11. tcpsocket = new QTcpSocket(this);

  12. connect(tcpsocket,&QTcpSocket::connected,
  13. [=]()
  14. {
  15. ui->textRead->setText("成功建立连接!");


  16. }
  17. );
  18. connect(tcpsocket,&QTcpSocket::readyRead,
  19. [=]()
  20. {
  21. QByteArray array = tcpsocket->readAll();
  22. ui->textRead->append(array);

  23. }
  24. );
  25. connect(tcpsocket,&QTcpSocket::disconnected,
  26. [=]()
  27. {
  28. ui->textRead->setText("连接中断!");
  29. }
  30. );
  31. }

  32. ClientWidget::~ClientWidget()
  33. {
  34. delete ui;
  35. }

  36. void ClientWidget::on_ButtonConnect_clicked()
  37. {
  38. QString ip = ui->lineEditIP->text();
  39. qint16 port = ui->lineEditPort->text().toInt();

  40. tcpsocket->connectToHost(QHostAddress(ip),port);
  41. }

  42. void ClientWidget::on_ButtonSend_clicked()
  43. {
  44. QString str = ui->textWrite->toPlainText();
  45. tcpsocket->write(str.toUtf8().data());
  46. ui->textRead->setText("客户端:");
  47. ui->textRead->append(str);
  48. }

  49. void ClientWidget::on_ButtonClose_clicked()
  50. {
  51. tcpsocket->disconnectFromHost();
  52. tcpsocket->close();

  53. }

...全文
给本帖投票
642 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_43317024 2018-09-30
  • 打赏
  • 举报
回复
这样可以啊
www_adintr_com 2018-09-29
  • 打赏
  • 举报
回复
字符串中注释无效

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部