中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 操作系统 > Linux > Linux综合
[精华] 使用 IGD(Upnp)解決 MSN 語音聊天問題
作者:未知 时间:2005-09-13 22:28 出处:Blog.ChinaUnix.net 责编:chinaitpower
              摘要:[精华] 使用 IGD(Upnp)解決 MSN 語音聊天問題
因為MSN Messenger 不直接支持NAT﹐所以在使用Iptables 構建的Firewall后面的MSN Messenger 用戶無法和Firewall外面的用戶使用語音通訊。而Linux UPnP Internet Gateway Device Project 剛好就可以解決該問題。

首先﹐來看看什么是UPnp

UPnP是通用即插即用(Universal Plug and Play)的縮寫,是實現智慧設備端到端網路連接的結構。
它也是一種架構在TCP/IP和HTTP技術之上的,分散式、開放的網路結構,以使得在聯網的設備間傳遞控制和資料。UPnP 技術實現了控制點、設備和服務之間通訊的支援,並且設備和相關服務的也使用XML定義並且公佈出來。使用UPnP,設備可以動態加入網路,自動獲得一個 IP地址,向其他設備公佈它的能力或者獲知其他設備的存在和服務,所有這些過程都是自動完成的,此後設備能夠彼此直接通訊。

UPnp 相關網站
1. UPnP Forum
UPnp Forum
2. UPnP SDK For Linux
UPnP SDK For Linux
3. Linux UPnP Internet Gateway Device
Linux UPNP IGD

好啦﹐現在我們再來看看怎樣在Linux 下面安裝Linux IGD

(請確保你擁有root權限﹐并了解怎樣在Linux 編譯程序)

1. 到http://sourceforge.net/projects/linux-igd/下載Linux GID 程序﹐當前版本是 0.92

2. 到http://sourceforge.net/projects/upnp/下載UPnP SDK For Linux. 當前版本為1.04

3. 解壓縮
bash-2.04# tar -xzf linuxigd-0.92.tgz
bash-2.04# tar -xzf upnpsdk-1.0.4.tar.gz

4.修改 upnpsdk 源程序中的src/ssdp/ssdplib.c,將第406行

SelfAddr.sin_addr.s_addr = inet_addr(SSDP_IP);
改為
SelfAddr.sin_addr.s_addr = htonl(INADDR_ANY);
5.編譯 upnpsdk
bash-2.04# cd /usr/src/upnpsdk-1.0.4
bash-2.04# make
.......
bash-1.04# make install

6.編譯 Linux IGD
bash-1.04# cd /usr/src/linux-gid
bash-1.04# make
bash-1.04# make install

7.增廣播地址路由
route add -net 239.0.0.0 netmask 255.0.0.0 [color=red]int_if[/color]
注意﹐將上面命令中的 int_if 換成你的Firewall上的內部網卡名稱。
e.g. 你使用eth0 聯接到你的局域網﹐則使用以下命令﹕
route add -net 239.0.0.0 netmask 255.0.0.0 eth0

8. 啟動Upnp
完成以上命令后﹐在命令行敲入命令﹕
upnpd <extif> <intif>
當然﹐你得用你的Internet 接口網卡取代上面的<exif>﹐并用內部局域網網卡名稱取代<intif>.
e.g. 在我的Firewall上﹐我使用eth0 聯接到互聯網﹐使用eth1聯接到局域網﹐則我使用以下命令﹕
upnpd eth0 eth1

9.這里﹐再嘗試一下在你的客戶端電腦上使用MSN和你的朋友進行語音聊天....

好啦﹐基本的安裝完成了。當然﹐你要是想每次開機自動執行﹐你還得寫一個腳本。這里提供一個供參考 (該腳本轉自Linux GID 網站的論壇)

#!/bin/sh
# chkconfig: 2345 20 80
# description: upnpd is a Universal Plug and Play Internet Gateway Device for Linux.
#

# Source function library.
. /etc/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ $ = "no" ] && exit 0

RETVAL=0
prog="upnpd"

start() {
tickers=''
# Start daemons.
echo -n $"Starting $prog: "
daemon upnpd eth0 eth1
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/upnpd
route add -net 239.0.0.0 netmask 255.0.0.0 eth1
return $RETVAL
}

stop() {
# Stop daemons.
echo -n $"Shutting down $prog: "
killproc upnpd
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/upnpd
route del -net 239.0.0.0 netmask 255.0.0.0 eth1
return $RETVAL
}

# See how we were called.
case "" in
start)
start
;;
stop)
stop
;;
status)
status upnpd
RETVAL=$?
;;
restart|reload)
stop
start
RETVAL=$?
;;
condrestart)
if [ -f /var/lock/subsys/upnpd ]; then
stop
start
RETVAL=$?
fi
;;
*)
echo $"Usage: "
exit 1
esac

exit $RETVAL


將以上內容復制到 /etc/rc.d/init.d/upnpd,并用chkconig 設定啟動參數。

至此﹐所有設定基本完成啦﹐各位如果有問題﹐歡迎在此討論。這篇文章﹐只是拋磚引玉.希望有大量的玉向我砸來....

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有