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