Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 如何维护连接,无需请求即可向远程客户端发送实时数据_Sockets_Networking_Binding_Portforwarding - Fatal编程技术网

Sockets 如何维护连接,无需请求即可向远程客户端发送实时数据

Sockets 如何维护连接,无需请求即可向远程客户端发送实时数据,sockets,networking,binding,portforwarding,Sockets,Networking,Binding,Portforwarding,我正在开发一个移动项目,它可以控制一个家,从家里或外面接收信息。如果我从外部使用我的应用程序,我将在路由器上设置端口转发机制,以连接到服务器 我认为从服务器接收数据的事实应该由客户端(android应用程序)启动,该客户端处于其他notwork状态,否则将被阻止。 *是否有一种解决方案可以从外部实时接收数据(温度),只需请求一次,或者我应该发送像evrey minute这样的请求*我很困惑,因为像视频流这样的应用程序只需启动视频播放器就可以从服务器接收数据,然后自动接收udp数据包 更具体地说,

我正在开发一个移动项目,它可以控制一个家,从家里或外面接收信息。如果我从外部使用我的应用程序,我将在路由器上设置端口转发机制,以连接到服务器

我认为从服务器接收数据的事实应该由客户端(android应用程序)启动,该客户端处于其他notwork状态,否则将被阻止。 *是否有一种解决方案可以从外部实时接收数据(温度),只需请求一次,或者我应该发送像evrey minute这样的请求*我很困惑,因为像视频流这样的应用程序只需启动视频播放器就可以从服务器接收数据,然后自动接收udp数据包


更具体地说,我可以只发送一次请求就将数据从服务器发送到远程客户端(可能通过为每个客户端打开套接字、VPN、SIP)???

我不喜欢安卓世界,但这不是你要找的服务吗?:

我不喜欢Android世界,但这不是你想要的服务吗

向远程客户端发送数据:安全可靠 只有一种合理可靠的方法可以向远程客户端发送
信号。我想确认您最初的假设,即不经请求发送到客户端,这在理论上是不可能的,因为设备需要在某处呼叫总部并通知代理网关(SIP)或其地址。但是请忽略这一点,因为正确的方法将在这里与源代码一起传递

安全重要性 重要的是要认识到,打开防火墙不属于良好做法。最好保持防火墙对入站流量的锁定规则。以下部分是一种安全方法,允许您以最大的安全性打开出站连接,以防止窥探和其他不安全的安全漏洞

下载Android源代码库 有关下载Android源库文件的说明,请参见此处:

在Android上远距离按需接收数据 您需要复制/粘贴以下代码以快速推进工作。首先,将这些Java代码粘贴到您的应用程序中。然后下载库文件

// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// ANDROID PHONE
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Pubnub pubnub = new Pubnub(
    "",      // PUBLISH_KEY   (Optional, supply "" to disable)
    "demo",  // SUBSCRIBE_KEY (REQUIRED)
    "",      // SECRET_KEY    (Optional, supply "" to disable)
    "",      // CIPHER_KEY    (Optional, supply "" to disable)
    true     // SSL_ON?
);
Hashtable args = new Hashtable(1);
args.put( "channel", "distant-client-ABC-DEF" );
pubnub.subscribe(args, new Callback() {
    public void connectCallback(String channel) {
        System.out.println("CONNECT on channel:" + channel);
    }

    public void disconnectCallback(String channel) {
        System.out.println("DISCONNECT on channel:" + channel);
    }

    public void reconnectCallback(String channel) {
        System.out.println("RECONNECT on channel:" + channel);
    }

    public void successCallback(String channel, Object message) {
        System.out.println(channel + " " + message.toString());
    }

    public void errorCallback(String channel, Object message) {
        System.out.println(channel + " " + message.toString());
    }
});
按需向远程客户端发送数据 在家庭计算机/系统上的Java VM上,您可以使用相同的代码将数据安全地发送到远程客户端。使用以下代码执行此操作:

下载JVM服务器源库 有关下载/使用JVM服务器源库文件的说明,请参见此处:

向远程客户端发送数据:安全可靠 只有一种合理可靠的方法可以向远程客户端发送
信号。我想确认您最初的假设,即不经请求发送到客户端,这在理论上是不可能的,因为设备需要在某处呼叫总部并通知代理网关(SIP)或其地址。但是请忽略这一点,因为正确的方法将在这里与源代码一起传递

安全重要性 重要的是要认识到,打开防火墙不属于良好做法。最好保持防火墙对入站流量的锁定规则。以下部分是一种安全方法,允许您以最大的安全性打开出站连接,以防止窥探和其他不安全的安全漏洞

下载Android源代码库 有关下载Android源库文件的说明,请参见此处:

在Android上远距离按需接收数据 您需要复制/粘贴以下代码以快速推进工作。首先,将这些Java代码粘贴到您的应用程序中。然后下载库文件

// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// ANDROID PHONE
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Pubnub pubnub = new Pubnub(
    "",      // PUBLISH_KEY   (Optional, supply "" to disable)
    "demo",  // SUBSCRIBE_KEY (REQUIRED)
    "",      // SECRET_KEY    (Optional, supply "" to disable)
    "",      // CIPHER_KEY    (Optional, supply "" to disable)
    true     // SSL_ON?
);
Hashtable args = new Hashtable(1);
args.put( "channel", "distant-client-ABC-DEF" );
pubnub.subscribe(args, new Callback() {
    public void connectCallback(String channel) {
        System.out.println("CONNECT on channel:" + channel);
    }

    public void disconnectCallback(String channel) {
        System.out.println("DISCONNECT on channel:" + channel);
    }

    public void reconnectCallback(String channel) {
        System.out.println("RECONNECT on channel:" + channel);
    }

    public void successCallback(String channel, Object message) {
        System.out.println(channel + " " + message.toString());
    }

    public void errorCallback(String channel, Object message) {
        System.out.println(channel + " " + message.toString());
    }
});
按需向远程客户端发送数据 在家庭计算机/系统上的Java VM上,您可以使用相同的代码将数据安全地发送到远程客户端。使用以下代码执行此操作:

下载JVM服务器源库 有关下载/使用JVM服务器源库文件的说明,请参见此处:


这是一个网络问题,与Android无关。这是一个网络问题,与Android无关。你是否考虑发送一个信号,通知远程客户一些特定的事情?或者更像是视频/音频之类的比特流?要通知远程客户某些特定的信息,我在下面的答案中添加了一个最著名的选项,用于免费向远程客户发送数据信号。您是否考虑发送a信号,通知远程客户某些特定的信息?或者更像是视频/音频之类的比特流?为了通知远程客户端某些特定的信息,我在下面的答案中添加了一个最著名的选项,用于向远程客户端免费发送数据信号。因此,这将有助于我将通知和实时数据从服务器发送到android手机??我听说过一些解决方案,比如sip,或者保持会话打开,Pubnub是最好的解决方案吗?thx for the awnserso这将帮助我从服务器向android手机发送通知和实时数据??我听说过一些解决方案,比如sip,或者保持会话打开,Pubnub是最好的解决方案吗?阿恩瑟的thx