Chủ Nhật, 17 tháng 8, 2014

[JAIN SIP] Chương 11 : HelloPhone (bổ sung JAIN SDP)

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