Chương 11 : HelloPhone (bổ sung JAIN SDP)
Trong
chương này, chúng ta sẽ bổ sung code JAIN SDP vào HelloPhone đã xây
dựng trong chương 10. Nghĩa là, bổ sung SDP message vào message body của
INVITE request để định nghĩa những tham số cần thiết cho việc thực hiện
voice chat.
Mỗi SDP message bắt buộc phải định nghĩa các line sau :
- version (v-line) : phiên bản giao thức SDP, mặc định là 0.
- origin (o-line) : nhận dạng session và người khởi tạo.
- session (s-line ) : tên session, chỉ dành cho multicast, còn unicast = "-".
- time (t-time) : thời gian session được kích hoạt.
- media (m-line) : tên media và địa chỉ truyền tải.
SDP message được định nghĩa trong HelloPhone để thực hiện voice chat có dạng như sau:
Trong
đó, các thông số cần thiết để thực hiện voice chat : IP người gởi trong
o-line, port và media fortmat trong m-line. Như vậy, để dễ dàng lập
trình, chúng ta tạo ra SDPInfo class chứa tất cả các thông tin này.
I. Cách thực hiện SDP trong HelloPhone :
UAC
tạo ra 1 SDP message miêu tả các thông tin của chính UAC bao gồm :địa
chỉ IP của UAC, port và media format dùng cho voice chat. SDP message
này được lưu trong message body của INVITE request và gởi đến UAS. Nó
được gọi là sdp Offer.
Nếu
UAS chấp nhận cuộc gọi, UAS cũng phải tạo ra một SDP message tương tự
miêu tả các thông tin của chính UAS và được lưu trong message body của
"200 OK" response gởi đến UAC. SDP message này được gọi là sdp Answer.
Cuối cùng, UAC và UAS sử dụng những thông tin trong sdp Answer và sdp Offer để khởi tạo Session Manager của JMF.
Tạo SdpTool class có các tính năng sau :
+ Tạo ra SDP message và lưu lại các thông tin trong SDP message này vào biến SenderInfo.
+ Lấy ra các thông tin từ SDP message nhận được và lưu lại các thông tin này vào biến ReceiverInfo..
II. SdpTool class :
a. Biến :
b. Phương thức:
- Hàm dựng SdpTool() : khởi tạo đối tượng sdpFactory.
- Phương thức createSdp(SdpInfo
senderInfo) : tạo ra SDP message dựa trên các thông tin người gởi và
lưu lại các thông tin này trong biến toàn cục senderInfo.
- Phương thức getSdp(byte[]
content) : Lấy ra các thông tin từ SDP Message được thể hiện dưới dạng
mảng byte và lưu thông tin này vào biến toàn cục receiverInfo.
III. Sử dụng SDP message trong HelloPhoneListener class:
- Tạo biến toàn cục :
- Trong hàm dựng HelloPhoneListener() khởi tạo các đối tượng SdpTool:
- Trong phương thức sendRequest() : xử lý tính năng sau:
+
Tạo SDP message từ UAC và được lưu trong message body của INVITE
request. Các thông tin trong SDP message này được lưu trong biến
senderInfo của sdpOffer.
- Trong phương thức sendResponse() : xử lý 2 tính năng sau:
+ Lấy SDP message trong message body của INVITE và lưu các thông tin trong SDP message này vào biến receiverInfo của sdpAnswer.
+
Tạo SDP message từ UAS và được lưu trong message body của "200 OK"
response. Các thông tin trong SDP message này được lưu trong biến
senderInfo của sdpAnswer.
- Trong phương thức processResponse () : xử lý tính năng sau:
+
Lấy SDP message trong message body của 200 OK response và lưu các thông
tin trong SDP message này vào biến receiverInfo của sdpOffer.
VI. Chạy chương trình :
Mỗi giao diện tương ứng 1 máy tính, nếu chạy trên cùng 1 máy tính port phải khác nhau.
Giả sử giao diện 1 :
- Port dành cho sip 6060, bấm vào button “Connect” để khởi động SIP.
- Port dành cho Voice là 40000.
- Destination là địa chỉ IP và Port của máy cần gởi đến.
- Bấm button “YES” để thực hiện voice chat.
Giao diện 2 :
- Port dành cho sip 6070, bấm vào button “Connect” để khởi động SIP.
- Port dành cho Voice là 50000.
- Destination là địa chỉ IP và Port của máy cần gởi đến.
- Bấm button “YES” để thực hiện voice chat.
Code đầy đủ :
http://www.mediafire.com/download/cjme4j6didju0gd/HelloPhone_JAINSIP.rar
Không có nhận xét nào:
Đăng nhận xét