小编naw*_*bgh的帖子

我应该通过哪些WebRTC约束和选项来获得Firefox和Google Chrome之间的互操作性

我正在为局域网构建聊天应用程序.我使用WebRTC但无法让Firefox和Google Chrome进行互操作.我不知道我应该传递给RTCPeerConnection createOffer/createAnswer的确切参数.

我在同一台计算机Fedora Linux 20 中使用Firefox 31Google Chrome 36进行了以下测试

RTCPeerConnection创建如下: pc = new RTCPeerConnection(null, RTC_PC_OPTIONS);

答案/优惠创建如下: pc.createOffer(onsuccess, onfail, CONSTRAINTS);

我的问题是:我应该通过哪些参数(RTC_PC_OPTIONSCONSTRAINTS)来获得两个浏览器之间的互操作性?

测试1

RTC_PC_OPTIONS = undefined
CONSTRAINTS = undefined

                        FFx2FFx     FFx2Chrome      Chrome2FFx      Chrome2Chrome
                        -------     ----------      ----------      -------------
dataChannel setup       ok          ok              ok              ok
dataChannel send/recv   ok          ok              ok              ok
Video stream            ok          ok              err [1]         ok
Run Code Online (Sandbox Code Playgroud)

测试2

MDN recomands this value for RTC_PC_OPTIONS

RTC_PC_OPTIONS = {
    optional: [
        {DtlsSrtpKeyAgreement: true},
        {RtpDataChannels: true}
    ] …
Run Code Online (Sandbox Code Playgroud)

firefox google-chrome webrtc

10
推荐指数
1
解决办法
5080
查看次数

用于访问互联网时通知的Bash脚本

我写了这个bash脚本,以便在互联网变得可访问时发出通知,但我不了解许多正在发生的事情.这是脚本:

while ! ping 8.8.8.8 -c 1 2&> /dev/null ; do true; done;
Run Code Online (Sandbox Code Playgroud)
  • -c 1选项告诉ping我只想发送一个数据包.
  • 2&> /dev/null是因为我不想看到输出.
  • true是因为bash不接受do;语法.
  • 终止条件是! ping ...因为ping在某些数据包之前没有收到数据包时返回非零状态代码timeout.

预期的行为是在ping成功结束时此循环结束,终端仿真器将自动向我发送通知.


问题

  • 即使可以访问Internet,此命令也不会结束.
  • 试图杀死命令ctrl + C不起作用.我认为它会杀死子命令ping而不是整个命令.
  • 2&> /dev/null除了将输出写入终端的次要问题之外,只有删除才能使所有事情都有效.

问题

  1. 我的命令出了什么问题?
  2. 终端仿真器究竟是如何做出反应的ctrl + C
  3. 为什么删除2&> /dev/null使它工作?

请注意,我已经有了转机.不过我还想了解bash一点.

f() { while ! ping 8.8.8.8 -c 1 ; do true; done; }; …
Run Code Online (Sandbox Code Playgroud)

bash shell terminal-emulator

7
推荐指数
1
解决办法
322
查看次数

为什么std :: sort不使用我的运算符<implementation

为什么std :: sort operator<这段代码中没有使用我的实现

#include <iostream>
#include <vector>
#include <tuple>
#include <algorithm>
using namespace std;

bool operator<(
    const tuple<int, int>& t1,
    const tuple<int, int>& t2
) {
    return get<1>(t1) > get<1>(t2);// `>` so that it gets sorted in reverse
}

int main() {
    vector<tuple<int, int>> v;
    for (int i = 0; i < 10; ++i) {
        v.push_back(make_tuple(0, i));
    }
    cout << "before sort: ";
    for (auto& x : v) { cout << get<1>(x) << ", "; } …
Run Code Online (Sandbox Code Playgroud)

c++ operator-overloading

7
推荐指数
1
解决办法
160
查看次数

为什么(*p =*p)&(*q =*q); 在C中触发未定义的行为

为什么(*p=*p) & (*q=*q);在当C触发未定义行为pq相等.

int f2(int * p, int * q)
{
  (*p=*p) & (*q=*q);
  *p = 1;
  *q = 2;
  return *p + *q;
}
Run Code Online (Sandbox Code Playgroud)

来源(顺便说一句好文章):http://blog.frama-c.com/index.php?post/2012/07/25/On- the- redundancy-of-C99-s-restrict

c pointers undefined-behavior sequence-points

6
推荐指数
1
解决办法
1074
查看次数

如何退出工作线程 QThread 的事件循环

我正在编写一个带有按钮的应用程序来启动/停止工作线程(实现QThread)。工作线程每隔几毫秒就会持续调度一个作业。为了终止工作线程,我从 GUI 线程调用worker.quit()worker.exit(0)也不起作用)方法并等待finished信号被触发。

问题是即使finished信号被触发,线程也不会终止。

这是一个最小的例子:https : //gist.github.com/NawfelBgh/941babdc011f07aa4ab61570d7b88f08

最小示例的屏幕截图

编辑

我对发生的事情的解释是错误的:工作线程正在终止,但该方法iter正在主线程中执行,如@sergey-tachenov 所述,并从代码生成的日志中确认:

void run() {
    std::cout <<"From worker thread: "<<QThread::currentThreadId() << std::endl;
...
void iter() {
    std::cout <<"From thread: "<<QThread::currentThreadId() << std::endl;
...
void MainWindow::on_pushButton_clicked()
{
    std::cout <<"From main thread: "<<QThread::currentThreadId() << std::endl;
Run Code Online (Sandbox Code Playgroud)

我切换到不依赖于s的不同设计QTimer。但是我没有将其作为答案提交,因为这个问题的标题是“如何退出工作线程 QThread 的事件循环”。

c++ qt qthread

1
推荐指数
1
解决办法
1191
查看次数