SIPプログラミング学習
基礎からわかるTCP/IP SIPによるVoIPプログラミング
参考図書
基礎からわかるTCP/IP SIPによるVoIPプログラミング
著者:マッキーソフト株式会社 著
オーム社発行
基礎からわかるTCP/IP SIPによるVoIPプログラミング|Ohmsha
http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06559-6
VoIP,SIP技術でネット・コミュニケーションをリードするマッキーソフト
http://www.mackey.co.jp/
ソースコードダウンロードサイト
http://www.ohmsha.co.jp/data/link/4-274-06559-6/index.htm
sip_voip_sample-1.1.tar.gz
正誤情報
http://www.mackey.co.jp/seigohyo.html
動作環境
CentOS 5.5 on VMware Workstation 6.5
ソースの展開
sip_voip_sample-1.1.tar.gzを/home/sipuaにコピーし、ソースを展開します。
# cd sipua/
<sip_voip_sample-1.1.tar.gzをコピーします>
# tar zxfv sip_voip_sample-1.1.tar.gz
ソースが/home/sipua/sipua-1.1/に展開されます。
[root@localhost sipua-1.1]# pwd /home/sipua/sipua-1.1 [root@localhost sipua-1.1]# ls Makefile g711enc.c sdp.h sip_message.c sound.h timestamp.c codec.c rtp_ctrl.c sip.conf sip_message.h stack_if.c codec.h rtp_ctrl.h sip_ctrl.c sip_util.h stack_if.h g711dec.c sdp.c sip_ctrl.h sound.c stk_main.c [root@localhost sipua-1.1]#
ビルド
ソースのあるディレクトリに移動し、ソースをコンパイルします。
# cd /home/sipua/sipua-1.1
# gcc -o ./sipua -D_POSIX_PTHREAD_SEMANTICS -lpthread rtp_ctrl.c \
stack_if.c stk_main.c sip_ctrl.c sdp.c sound.c codec.c sip_message.c
実行ファイルsipuaが作成されます。
[root@localhost sipua-1.1]# ls Makefile g711enc.c sdp.h sip_message.c sound.h timestamp.c codec.c rtp_ctrl.c sip.conf sip_message.h stack_if.c codec.h rtp_ctrl.h sip_ctrl.c sip_util.h stack_if.h g711dec.c sdp.c sip_ctrl.h sound.c stk_main.c [root@localhost sipua-1.1]# gcc -o ./sipua -D_POSIX_PTHREAD_SEMANTICS -lpthread rtp_ctrl.c stack_if.c stk_main.c sip_ctrl.c sdp.c sound.c codec.c sip_message.c [root@localhost sipua-1.1]# ls Makefile g711enc.c sdp.h sip_message.c sound.c stk_main.c codec.c rtp_ctrl.c sip.conf sip_message.h sound.h timestamp.c codec.h rtp_ctrl.h sip_ctrl.c sip_util.h stack_if.c g711dec.c sdp.c sip_ctrl.h sipua stack_if.h [root@localhost sipua-1.1]#
Makefileを使用してのビルド
Makefileの内容
CC = gcc CSRCS = rtp_ctrl.c\ stack_if.c\ stk_main.c\ sip_ctrl.c\ sdp.c\ sound.c\ codec.c\ sip_message.c NAME = ./sipua DEFINE = -DLINUX -D_POSIX_PTHREAD_SEMANTICS DEBUG = -g LIB = -lpthread all: $(CC) -o $(NAME) $(DEFINE) $(DEBUG) $(LIB) $(CSRCS) clean: rm $(NAME)
ビルド
Makefileを使用してビルドします。
# cd /home/sipua/sipua-1.1
# make clean
# make
IPアドレスの割り付けと/etc/hostsの設定
IPアドレスの割り付けと
SIPサーバ |
192.168.2.100
|
---|---|
SIP端末 SIPUA1 |
192.168.2.101
|
SIP端末 SIPUA2 |
192.168.2.102
|
/etc/hostsの設定
/etc/hostsに以下のIPアドレスとホスト名の対応を追加します。
192.168.2.101 ua1.voip.org ua1
192.168.2.102 ua2.voip.org.ua2
(注) /etc/hostsの設定後、再起動します。
sip.conf 設定ファイル
設定項目
RTPポート番号 |
rtp_port
1024 ~ 65535の値を設定します。
|
---|---|
ユーザ名 |
user_name
SIP URIの@の前に入るユーザ名です。
|
SIPのIPアドレス |
reg_svr
SIPサーバのIPアドレスを設定します。
PtoP接続の場合はSIPサーバを使用しないがダミーの値を設定します。
|
SIPサーバ利用設定 |
use_svr
on SIPサーバを使用します。
off SIPサーバを使用しません。
|
SIP端末SIPUA1のsip.conf
rtp_port = 10000
user_name = user1
reg_svr = 192.168.2.100
use_svr = off
SIP端末SIPUA2のsip.conf
rtp_port = 10000
user_name = user2
reg_svr = 192.168.2.100
use_svr = off
起動
# cd /home/sipua/sipua-1.1
# ./sipua
発信
発信は、
iコマンド
を実行します。
iコマンドの入力後、要求に従い宛先URLを入力します。
コマンド一覧
r |
登録
|
---|---|
i |
発信
コマンド入力後宛先URLを入力
|
o |
接続
|
s |
RTP送信開始
|
b |
切断
|
u |
登録解除
|
e |
終了
|
SIP関連RFC
RFC 3261 SIP: Session Initiation Protocol
http://www.softfront.co.jp/tech/ietfdoc/trans/rfc3261j.txt
RFC 3311 SIP UPDATE Method
http://www.softfront.co.jp/tech/ietfdoc/trans/rfc3311j.txt
RFC 4566 SDP
http://www.softfront.co.jp/tech/ietfdoc/trans/rfc4566j.txt
RFC 3665 SIP Basic Call Flow Examples
http://www.ietf.org/rfc/rfc3665.txt
追加 2010.07.09
追加 2010.06.27
2008.10.22