标签: stun

我应该使用Java和哪些Stun库?

Java,我试图编写自己的STUN客户端,但似乎我犯了错误,因此,大部分时间它都被冻结了.所以我想知道什么STUN客户端库可用于Java,开始.

跟进:(在尝试以下的同时,仍然没有涉及NAT /防火墙后面的解决方案)

第1步:眩晕课:http://babbly.googlecode.com/svn/trunk/src/org/babbly/core/net/InetAddresResolver.java

/* modified */
import java.io.*;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.URLEncoder;
import java.net.UnknownHostException;

import net.java.stun4j.StunAddress;
import net.java.stun4j.client.SimpleAddressDetector;
import java.util.Random;

public class stun
{

  public static final int    MAX_PORT_NUMBER = 65535;
  public static final int    MIN_PORT_NUMBER = 1024;
  private static DatagramSocket socket = null;
  private static SimpleAddressDetector detector;

    public static synchronized InetAddress resolveInternetInterface(InetAddress dest)
    {

        InetAddress networkInterface = null;

        if(dest == null)
        {
            try {
                dest = InetAddress.getByName("78.12.2.61");
            } catch (UnknownHostException …
Run Code Online (Sandbox Code Playgroud)

java stun

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

JSTUN vs PJNATH

我将在JavaScript中编写自己的STUN实现(带有NodeJS的服务器端),我正在寻找一个基于我的代码的库.

我找到了JSTUN和PJNATH,两者似乎都受到stackoverflow成员的支持.我下载了两者的源代码,PJNATH大约有15,000行代码,而JSTUN小于3000.

一个图书馆比另一个图书馆更完整吗?

我需要服务器和客户端组件,我希望尽可能完整,因为我不想实现TURN(太硬件密集).

我应该看一下更好的图书馆吗?最终我想制作一个完全符合ICE标准的解决方案,但现在STUN已经足够了.

ice serverside-javascript stun node.js

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

我们可以为商业应用程序使用google stun服务器(nodejs webrtc.io-client的默认设置)吗?

https://npmjs.org/package/webrtc.io-client说:

用法

rtc.createStream({"video": true, "audio":true}, function(stream){
  // get local stream for manipulation
}
rtc.connect('ws://yourserveraddress:8001', optionalRoom);
//
Run Code Online (Sandbox Code Playgroud)

然后有一堆回调可用

您可以通过调用rtc.SERVER ="STUN stun.l.google.com:19302"来设置STUN服务器并设置您的服务器. 库使用的默认STUN服务器是谷歌服务器.

我也可以为我的商业应用程序使用相同的STUN服务器吗?

stun webrtc

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

UDP打孔(Java)

我一直在尝试创建套接字聊天/文件传输应用程序几周.我花了几个小时在互联网上搜索关于UDP打孔的代码片段,但是我没有发现任何有效或足够简单的东西供我使用.

我正试图让两个客户端在路由器(NAT)之后相互连接.我已经设法建立一个共享两个客户端IP和端口的服务器,但我还没有设法实际启动连接.我可以在任何地方使用任何源代码吗?

我找到了几个像JStun一样的STUN/ICE/TURN库,但没有关于如何使用它们的文档.我是否需要STUN服务器才能启动连接?我可以使用像numb.viagenie.ca或http://www.stunserver.org/这样的公共网站吗?

任何答案将不胜感激.谢谢!

编辑:我有更多的讨论,我发现即使通过PHP,STUN也很容易.我已经设置了自己的PHP stun,只是共享两个客户端数据.困难的部分是连接两个客户端,但这使用了一个名为ICE的东西.感谢selbie 在评论中发布此内容.这使我与ICE走在正确的轨道上.如果有人想出其他的话,我会把这个问题保持开放一段时间.我将开始编写自己的ICE代码,或尝试在线查找内容.谢谢!

java sockets udp stun hole-punching

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

如何设置Node/Express作为STUN服务器?

我正在寻找关于这个主题的任何好资源,或者是一个使用Node/Express实现STUN服务器的开源项目.

stun node.js express webrtc

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

适用于iOS iPhone的ICE,STUN,TURN库

我需要在两个用户之间建立P2P UDP和TCP连接.他们都是NAT的背后.一点研究让我想到了STUN,TURN和ICE.

  1. 有没有支持相同的开源iOS(库)?

  2. iPhone中的FaceTime也使用ICE,STUN,TURN到NAT遍历,iOS SDK也暴露了这样的API吗?

  3. 我在resiprocate源代码(www.resiprocate.org)中找到了nICRr代码,我可以在Mac OS X上测试STUN部分.有没有人尝试过使用相同的iOS 4.0或更高版本?

谢谢,罗德尼

iphone nat stun turn

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

关于昏迷服务器的困惑

我需要的是,我将打开一个UDP监听X端口(本地机器)的服务器,并且 machine(public IP)可以向UDP我发送数据包.我的机器没有public IP.基本上我需要stun.

我正在测试stuntman服务器/客户端项目.我在服务器(公共IP)中运行stuntman-server.在我的系统中运行客户端(本地IP).我要求为端口映射ip/9999port.

./stunclient --mode full --protocol udp --localport 9999 stun.server.ip
Run Code Online (Sandbox Code Playgroud)

Stun服务器返回IP和端口.我做了什么,然后,打开一个UDP在我的本地系统服务器(使用Java),并开始在监听9999端口和发送UDP的消息other machine (which has public IP),以mapped IP/port通过STUN服务器返回.但我无法收到任何数据.您可以假设我的服务器/客户端代码(用java编写)在本地网络中正常工作.

流:

My machine ->>>>>stun request for 9999 port and my ip ------> stun server
My machine <<<<<<<<<<<<<<<<<<mapped ip/port <<<<<<<<<<<<<<<  stun server
My machine : Run JAVA udp server socket in 9999 port

My machine  <<<<<<<<<<<<<<<<<<<UDP …
Run Code Online (Sandbox Code Playgroud)

stun

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

NAT遍历 - 使用STUN成功的可能性

我正在开发一个P2P应用程序,我需要使用STUN和/或TURN进行NAT遍历.我已经研究了仅使用STUN时出现的问题(基本上它并不总是有效,因为它是基于UDP的,有些防火墙不会那样 - 根据我的问题,原因并不那么有趣),而且我一直在看关于使用STUN和TURN进行回退的建议(ICE方案).

但在我看到的每个地方,我只看到人们STUN"不太可能一直工作".我正在寻找的是一些具体的数字/统计数据.我可能会尝试自己生成它们,但我没有足够的客户端来获取重要的样本.

所以我想知道是否有人可以对使用STUN进行NAT遍历的成功率进行统计.如果我没有使用TURN作为后备,有多少对等点无法连接?

voip p2p nat stun turn

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

两个对称 NAT 后面的对等点之间的 ICE 协商是否会导致需要两个 TURN 服务器?

我阅读了RFC6577RFC8445 ,但我觉得 TURN 的使用方式与 ICE实际使用relay candidates.

TURN RFC 描述了使用单个 TURN 服务器在客户端和对等点之间传输数据。TURN 服务器上的transport addressTURN 服务器通过 TURN 消息接受来自客户端的数据流,而 TURN 服务器relayed transport address通过 UDP 接受来自对等方的数据流。这听起来很棒——一台 TURN 服务器和双向数据流。

然而,在阅读有关 ICE 的文章时,我觉得这种情况从未发生过。调用者和被调用者都独立地在可能的两个 TURN 服务器上进行分配,然后将各自的信息发送relayed transport addresses给对方。更像是一种I can be reached via this relayed transport address东西。然后进行连接检查,因此,这里最终使用两个 TURN 服务器,其中数据仅沿一个方向流经分配给relayed transport address每个参与者的 TURN 服务器。

这是真的?

TURN RFC 中的内容如下:

客户端可以安排服务器将数据包转发到某些其他主机(称为对等点),并可以控制转发方式的各个方面。客户端通过获取服务器上的 IP 地址和端口(称为中继传输地址)来完成此操作。当对等方将数据包发送到中继传输地址时,服务器会将数据包中继到客户端。当客户端向服务器发送数据包时,服务器使用中继的传输地址作为源将其中继到适当的对等点。

然而,我看不到通过 ICE 协商,数据会通过传输地址从客户端流向对等点的情况。呼叫者和被呼叫者都在 TURN 服务器上独立分配并发送给relayed transport addresses对方以进行联系。 …

ice stun webrtc turn

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

WEBRTC 视频聊天应用程序无法在不同网络中运行

我的视频聊天应用程序在同一网络中正常运行。它还使用 stun 生成并连接 IceCandidate。但由于某种原因,对等视频无法在不同的网络中播放。我在调试该问题时遇到问题。

我没有使用任何转弯服务器,但我怀疑这是问题,因为来自不同网络的对等点已经使用 stun 加入,只有视频无法播放

var socket= io('/')
var divVideoChatLobby = document.getElementById("video-chat-lobby")
var divVideoChat = document.getElementById("video-chat-room")
var joinButton = document.getElementById("join")
var userVideo = document.getElementById("user-video")
var peerVideo = document.getElementById("peer-video")
var roomInput = document.getElementById("roomName")
var roomname= roomInput.value
var rtcPeerConnection
var userStream

const iceServers = {
    iceServers:[
        {urls: "stun:stun.services.mozilla.com"},
        {urls: "stun:stun.l.google.com:19302"},
        {urls: "stun:stun1.l.google.com:19302"},
        {urls: "stun:stun3.l.google.com:19302"},
        {urls: "stun:stun4.l.google.com:19302"},
        {urls: "stun:stun.ekiga.net"},
     

    ]
}

userVideo.muted= "muted"
// var roomDiv = document.getElementById("room-div")
// roomDiv.style="display:none"
var creator=false

joinButton.addEventListener('click', function () {
    console.log('Room Name:', roomInput.value)
    if (roomInput.value …
Run Code Online (Sandbox Code Playgroud)

videochat stun node.js webrtc

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

标签 统计

stun ×10

webrtc ×4

node.js ×3

turn ×3

ice ×2

java ×2

nat ×2

express ×1

hole-punching ×1

iphone ×1

p2p ×1

serverside-javascript ×1

sockets ×1

udp ×1

videochat ×1

voip ×1