最近在研究穿透防火牆,找到libnice這個library,試過是可以用的,可以省掉不少事。
libnice是一個ICE實現庫。它實現了交互式連接建立(ICE)標準(RFC 5245)和NAT會話遍歷實用程序(STUN)標準(RFC 5389)。
官網地址:https://libnice.freedesktop.org/
原始碼庫地址:https://gitlab.freedesktop.org/libnice/libnice/
1.下載源碼:
git clone https://gitlab.freedesktop.org/libnice/libnice.git
2.編譯:
2.1. linux平台下:
depend on:
- glib> = 2.10
- pkg-config
- gupnp-igd> = 0.1.2(可選)
- gstreamer-0.10> = 0.10.0(可選)
- gtk-doc-tools#autogen.sh需要
2.2. 編譯
如果缺的話就需要
- apt-get install automake
- apt-get install gtk-doc-tools
- apt-get install build-essential libtool
開始編譯
k@k10:/home/libnice$ ./autogen.sh
k@k10:/home/libnice$ ./configure
k@k10:/home/libnice$ make
k@k10:/home/libnice$ make install
3.生成的程序和庫
在nice / .libs目錄下生成靜態庫libnice.a,動態庫libnice.so
在example目錄下生成三個示例程序。
4.示例程序的使用
k@k-C410:/home/libnice/examples$ ./simple-example 0 stunserver.org
Copy this line to remote client:
Tyyp 33oInvKVEn1Lo6LkVVy6P5 1,2013266431,192.168.10.17,47748,host
Enter remote data (single line, no wrapping):
>
橘色部分錶示提供給對等端協商時的驗證用戶名,密碼,外網地址,以空格分隔。
實際操作啟動二個實例(同網域或不同網域皆可),就可以開始p2p對話了:
第一個控制台:
k1@k-C410:/home/libnice/examples$ ./simple-example 0 stunserver.org
Copy this line to remote client:
Tyyp 33oInvKVEn1Lo6LkVVy6P5 1,2013266431,192.168.10.17,47748
Enter remote data (single line, no wrapping):
> h4p1 7M8uL1928RzeRv6cWRDqG8 1,2013266431,192.168.10.17,47758
Negotiation complete:([192.168.10.17]:47748,[192.168.10.17]:47758)
Send lines to remote (Ctrl-D to quit):
>a
第二個控制台:
k2@k-C410:/home/libnice/examples$ ./simple-example 0 stunserver.org
Copy this line to remote client:
h4p1 7M8uL1928RzeRv6cWRDqG8 1,2013266431,192.168.10.17,47758
Enter remote data (single line, no wrapping):
> Tyyp 33oInvKVEn1Lo6LkVVy6P5 1,2013266431,192.168.10.17,47748
Negotiation complete:([192.168.10.17]:47758,[192.168.10.17]:47748)
Send lines to remote (Ctrl-D to quit):
>b
存在的問題:在linux下,stun服務器地址不能通過域名解析到IP地址,解決方法是,直接用stun服務器的IP地址。
沒有留言:
張貼留言