qq_19684951 2019-07-26 15:27 采纳率: 25%
浏览 614

QT中如何在一个工程内,创建多个TCP服务?

我现在需要做一款同时具有modbustcp的server和client能力的软件,我依据example中的modbus Demo,写了两个子类
Server和Client,然后我想在主类MainWindow中进行调用这两个子类。

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = Q_NULLPTR);
    ~MainWindow();

private Q_SLOTS:
    ……
private:
    Ui::MainWindowClass* ui;
    Server* server1;
    Client* client1;
};

然而,现在我只要同时保留Server* server1;
Client* client1;程序运行就会在setupUi的centralWidget = new QWidget(MainWindowClass);语句也就是
创建界面的时候,报出异常:0xC0000005: 写入位置 0x000000000000006C 时发生访问冲突。

单独注释掉某一个,另外一个是可以正常运行的。

请问我这个问题应该怎么解决呢?现在还没有到具体的运行阶段,不知道该怎么样通过多进程的方法将类中的两个成员隔离开。

2019年7月26日15:52:33更新
我尝试了创建了一个ServerThread然后在线程中创建server,还是报错
  • 写回答

1条回答 默认 最新

  • Mr.Stone^_^ 2019-07-26 17:12
    关注

    main.cpp 中
    pid_t pid = ::fork();
    if( pid == -1)
    return -1;
    if(pid==0){
    Server *server =new Server();
    server->show();
    }
    else{
    Client * clinet= new Client();
    client->show();
    }

    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮