Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

您好,请教一个问题createsocket 创建后,关闭程序时需要释放么 #132

Open
downloadproject opened this issue Oct 28, 2022 · 8 comments

Comments

@downloadproject
Copy link

QWeakPointer<MainWindow> weakSelf = QWeakPointer<MainWindow>(sharedFromThis());
sockRecv  = Socket::createSocket();//创建一个UDP数据接收端口
sockSend  = Socket::createSocket();//创建一个UDP数据发送端口

sockRecv->bindUdpSock(9001);//接收UDP绑定9001端口
sockSend->bindUdpSock(0, "0.0.0.0");//发送UDP随机端口

sockRecv->setOnRead([weakSelf](const Buffer::Ptr &buf, struct sockaddr *addr , int){
        //接收到数据回调
       // DebugL << "recv data form " << getIP(addr) << ":" << buf->data();
    auto strongSelf = weakSelf.lock();
    if(!strongSelf) {
        return ;
    }
    strongSelf->handleOneRtp((uint8_t *) buf->data(), buf->size());
});

我创建了以后,关闭程序的时候会报如下错误,
the inferior stopped because it received a signal from operating system

Signal name :SIGSEGV

@xia-chu
Copy link
Member

xia-chu commented Oct 28, 2022

你这个代码看起来没什么问题

@downloadproject
Copy link
Author

您好,我用qt6,整个工程就写了一条语句Socket::Ptr sockRecv = Socket::createSocket();//创建一个UDP数据接收端口,在调试状态关闭程序,程序会崩溃,恳请指教,谢谢!

@wasphin
Copy link
Member

wasphin commented Nov 1, 2022

可以看下栈信息.

@downloadproject
Copy link
Author

实在不好意思,打扰了,我调试您的test_tcpClient时,注释了最后的semaphore几条语句 ,在debug下,程序会报错,恳请指教!谢谢!

int main() {
// 设置日志系统
Logger::Instance().add(std::make_shared());
Logger::Instance().setWriter(std::make_shared());

TestClient::Ptr client(new TestClient());//必须使用智能指针
client->startConnect("127.0.0.1",9000);//连接服务器

TcpClientWithSSL<TestClient>::Ptr clientSSL(new TcpClientWithSSL<TestClient>());//必须使用智能指针
clientSSL->startConnect("127.0.0.1",9001);//连接服务器

//退出程序事件处理
//static semaphore sem;

// signal(SIGINT, { sem.post(); });// 设置退出信号
//sem.wait();
return 0;
}

@downloadproject
Copy link
Author

您好,调试test_udpSock时,我将while(!exitProgram) 改成 if(!exitProgram) 在debug下,程序也会崩溃。

the inferior stopped because it received a signal from operating system

Signal name :SIGSEGV

@downloadproject
Copy link
Author

不好意思,能帮我看下么?谢谢!!

@wasphin
Copy link
Member

wasphin commented Nov 16, 2022

您好,调试test_udpSock时,我将while(!exitProgram) 改成 if(!exitProgram) 在debug下,程序也会崩溃。

the inferior stopped because it received a signal from operating system

Signal name :SIGSEGV

这个测试也没能复现。你可以用 gdb 调试下看看。

@downloadproject
Copy link
Author

好的,谢谢!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants