6et4280 - nhom 3 - phan mem chat tren android

27
ĐẠI HỌC BÁCH KHOA HÀ NỘI Báo cáo Project Môn học: Kỹ thuật mạng nâng cao Đề tài: Phần mềm chat trong mạng LAN trên Android Giảng viên hướng dẫn: T.S Trần Minh Trung Nhóm thực hiện: Nhóm 3 Họ tên Mã số sinh viên Lớp Nguyễn Thế Mạnh 20091740 Điện Tử Viễn Thông 11 – K54 Nguyễn Duy Khánh 20091439 Điện Tử Viễn Thông 11 – K54 Nguyễn Văn Hưng 20091384 Điện Tử Viễn Thông 11 – K54 Nguyễn Bá Nguyên 20091932 Điện Tử Viễn Thông 11 – K54 Hà Nội, tháng 12, năm 2013

Upload: nguyen-hung

Post on 22-Oct-2015

87 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

ĐẠI HỌC BÁCH KHOA HÀ NỘI

Báo cáo Project

Môn học: Kỹ thuật mạng nâng cao

Đề tài: Phần mềm chat trong mạng LAN trên Android

Giảng viên hướng dẫn: T.S Trần Minh Trung

Nhóm thực hiện: Nhóm 3

Họ tên Mã số sinh viên Lớp Nguyễn Thế Mạnh 20091740 Điện Tử Viễn Thông 11 – K54 Nguyễn Duy Khánh 20091439 Điện Tử Viễn Thông 11 – K54 Nguyễn Văn Hưng 20091384 Điện Tử Viễn Thông 11 – K54 Nguyễn Bá Nguyên 20091932 Điện Tử Viễn Thông 11 – K54

Hà Nội, tháng 12, năm 2013

Page 2: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

1

MỤC LỤC LỜI GIỚI THIỆU ......................................................................................................................................... 2

I. GIỚI THIỆU ĐỀ TÀI VÀ LẬP KẾ HOẠCH THỰC HIỆN .......................................................... 3

1. Giới thiệu đề tài ............................................................................................................................... 3

2. Lập kế hoạch thực hiện .................................................................................................................. 3

II. PHÂN TÍCH YÊU CẦU VÀ PHÂN CÔNG NHIỆM VỤ ........................................................... 3

1. Yêu cầu chức năng của phần mềm ................................................................................................ 3

2. Yêu cầu phi chức năng của phần mềm.......................................................................................... 5

3. Phân chia công việc cho các thành viên ........................................................................................ 5

III. GIỚI THIỆU VỀ LẬP TRÌNH ỨNG DỤNG ANDROID ........................................................... 6

1. Hệ điều hành Android .................................................................................................................... 6

2. Lập trình ứng dụng trên Android ................................................................................................. 7

3. Lập trình ứng dụng mạng .............................................................................................................. 7

IV. THIẾT KẾ CHƯƠNG TRÌNH ...................................................................................................... 8

1. Thiết kế giao diện ............................................................................................................................ 8

2. Truyền dữ liệu giữa các thiết bị. .................................................................................................... 9

2.1. Socket. ............................................................................................................................................ 9

2.2.Truyền dữ liệu. ............................................................................................................................... 9

2.3. Kịch bản trao đổi bản tin giữa các thiết bị trong mạng ............................................................. 10

3. Phân chia các module chức năng ................................................................................................. 12

4. Module tìm kiếm thiết bị trong mạng LAN ................................................................................ 12

5. Module thực hiện chức năng chat text ........................................................................................ 13

6. Module tính toán khoảng cách từ thiết bị tới bộ phát WiFi ...................................................... 14

7. Module thực hiện chức năng truyền/nhận file ........................................................................... 18

V. TRIỂN KHAI THỰC HIỆN ............................................................................................................ 19

1. Module tìm kiếm các thiết bị có trong mạng LAN ..................................................................... 19

2. Các loại bản tin thông báo truyền giữa các thiết bị ................................................................... 21

3. Thực hiện chức năng trò chuyện bằng văn bản (chat text) ....................................................... 22

4. Thực hiện tính toán khoảng cách thiết bị tới bộ phát sóng WiFi ............................................. 22

5. Thực hiện chức năng truyền và nhận file thông qua socket ...................................................... 22

6. Truyền và nhận file sử dụng WiFi P2P ....................................................................................... 23

VI. KẾT QUẢ VÀ ĐÁNH GIÁ .......................................................................................................... 24

Page 3: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

2

LỜI GIỚI THIỆU Khi đời sống được nâng cao cùng với khoa học kỹ thuật phát triển, nhu cầu giải trí

cũng đá dạng lên. Các loại hình giải trí không ngừng gia tăng và ngày càng phong phú, đa

dạng với một loạt ứng dụng như: nghe nhạc, xem phim, mạng xã hội, chat… Trong bối

cảnh Internet bùng nổ cùng với sự xuất hiện của những thiết bị di động như: điện thoại

Smart Phone, máy tính bảng… Điều này đã đem lại những lợi ích không thể phủ nhận

như kết nối hàng triệu người chỉ với kết nối mạng, trao đổi thông tin nhanh chóng, tiện

lợi, liên lạc với đối tác trong công việc… Con người đang ngày càng có nhu cầu giao tiếp

không chỉ trực tiếp mà còn ngay cả ở trên mạng.

Với sự phát triển vượt bậc và những lợi ích của nó, có thể nói hiện nay các thiết bị

di động Android đang có mặt khắp nơi từ những văn phòng cho đến khu giải trí. Xuất

phát từ ý tưởng đó, nhóm em lựa chọn đề tài thiết kế một ứng dụng Chat trên thiết bị

Android. Ứng dụng này ra đời nhằm phục vụ cho những nhân viên văn phòng có nhu cầu

trao đổi với nhau trong công việc và giải trí. Với thiết bị di động và truy cập vào cùng

một mạng Wifi, người dùng có thể trao đổi với nhau dễ dàng, nhanh chóng và thuận lợi.

Trong ứng dụng, các phòng chat được phân chia giúp người dùng dễ dàng lựa chọn cùng

với chức năng chat thoại rút ngắn thời gian trao đổi. Có thể nói ứng dụng đáp ứng được

những yêu cầu cơ bản của một ứng dụng Chat trên thiết bị di động.

Qua việc thực hiện ứng dụng này, chúng em hiểu thêm kiến thức về mạng, thiết bị

Android và áp dụng được kiến thức lập trình đã học. Do trình độ kiến thức và thời gian

hạn chế nên ứng dụng vẫn còn nhiều thiếu sót. Vì vậy nhóm em rất mong nhận được ý

kiến đóng góp của thầy giáo và các bạn để chúng em hoàn thiện kiến thức hơn.

Chúng em xin chân thành cảm ơn thầy T.S Trần Minh Trung đã nhiệt tình hướng

dẫn nhóm em hoàn thành đề tài này!

Page 4: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

3

I. GIỚI THIỆU ĐỀ TÀI VÀ LẬP KẾ HOẠCH THỰC HIỆN

1. Giới thiệu đề tài

Đề tài nhóm chúng em đã lựa chọn là: Phát triển phần mềm chat trong mạng

LAN qua WiFi chạy trên điện thoại Android.

Chức năng chính của phần mềm này là gửi tin nhắn trò chuyện dạng văn bản

giữa các thiết bị Android kết nối với nhau trong một mạng cục bộ thông qua

WiFi. Người dùng sử dụng phần mềm này có thể tìm kiếm được các người dùng

khác cũng đang sử dụng phần mềm này trong mạng LAN, hiển thị danh sách các

phòng chat (chat room) do mình cũng như các người dùng khác tạo ra. Người

dùng tham gia vào các phòng chat để trò chuyện với các người dùng khác.

Ngoài chức năng chính là gừi tin nhắn trò chuyện dạng văn bản, phần mềm

còn có các chức năng khác như chia sẻ file giữa các người dùng với nhau, trò

chuyện bằng lời nói (voice chat), tính toán gần đúng khoảng cách từ thiết bị của

người dùng tới bộ phát sóng WiFi.

2. Lập kế hoạch thực hiện

Dưới đây là bản kế hoạch thực hiện project mà nhóm đã đề ra:

Hình 1: Bảng kế hoạch thực hiện project

II. PHÂN TÍCH YÊU CẦU VÀ PHÂN CÔNG NHIỆM VỤ

1. Yêu cầu chức năng của phần mềm

a. Chức năng kết nối

Các thiết bị yêu cầu phải được kết nối vào cùng một mạng LAN của

một WiFi access point

Người dùng phải kết nối vào mạng LAN trước khi sử dụng được các

chức năng khác

Page 5: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

4

b. Tạo, quản lý và tham gia phòng chat (chat room)

Cho phép tạo các phòng chat để mọi người có thể tham gia vào đó

Người tạo phòng có thể xóa phòng mà mình đã tạo

Hiển thị danh sách các phòng hiện có (do mình tạo và do các thành viên

khác tạo) trong mạng

Tự động cập nhật danh sách phòng chat theo định kì thời gian. Người

dùng cũng có thể trực tiếp ra yêu cầu cập nhật danh sách phòng.

Người dùng có thể tham gia và rời khỏi phòng (do mình hoặc do thành

viên khác tạo) theo ý muốn

c. Quản lý danh sách thành viên

Sau khi đã kết nối vào mạng, người dùng có thể xem danh sách các

thành viên đang cùng sừ dụng phần mềm này trong mạng

Khi tham gia vào một phòng chat, người dùng có thể xem danh sách các

thành viên khác đang ở trong cùng phòng với mình

d. Gửi và nhận tin nhắn chat dạng text

Từ danh sách thành viên, người dùng bấm chọn một thành viên bất kì để

bắt đầu thực hiện lượt chat với thành viên đó

Hoặc từ danh sách phòng, người dùng chọn một phòng mà mình muốn

tham gia để bắt đầu thực hiện lượt chat trong phòng đó

Từ giao diện chương trình, người dùng nhập nội dung tin nhắn, ấn nút

“Gửi” để gửi tới các thành viên đang chat với mình

e. Chức năng chat voice

Được thực hiện giữa 2 người với nhau

Người dùng chọn một thành viên bất kì để gửi yêu cầu thực hiện lượt

chat voice tới thành viên đó. Nếu phía bên kia chấp nhận yêu cầu thì

phiên chat được bắt đầu.

f. Chức năng gửi/nhận file

Cho phép gửi và nhận file trong khi đang chat

Người dùng nhấn biểu tượng nút “Gửi file” trên giao diện, chọn file

muốn gửi. Những thành viên khác có thể chọn nhận hoặc không nhận

file. Nếu chấp nhận thì quá trình truyền file mới được bắt đầu.

Page 6: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

5

g. Chức năng xác định khoảng cách giữa các thiết bị

Dựa vào cường độ tín hiệu sóng WiFi mà thiết bị thu được, phần mềm

có thể tính toán được khoảng cách gần đúng từ thiết bị của người dùng

đến các access point trong không gian xung quanh

Từ đó mục tiêu là đưa ra công thức tính khoảng cách gần đúng giữa các

thành viên trong mạng với nhau.

2. Yêu cầu phi chức năng của phần mềm

- Phần mềm chạy trên các thiết bị điện thoại, máy tính bảng sử dụng hệ điều

hành Android phiên bản 2.3 trở lên

- Thiết lập kết nối giữa các thiết bị nhanh chóng, kết nối ổn định trong quá

trình sử dụng

- Phần mềm dễ sử dụng: giao diện trực quan, phù hợp với thiết bị di động,

người sử dụng có thể di chuyển giữa các tác vụ một cách đơn giản.

3. Phân chia công việc cho các thành viên

Qua những phân tích về chức năng như trên, nhóm chúng em đã phân chia

nhiệm vụ thực hiện cho từng thành viên trong nhóm như sau:

Thành Viên Nhiệm vụ

Nguyễn Thế Mạnh Quản lý project, phân chia công việc

Phân tích chức năng

Thiết kế giao diện

Lập trình các chức năng Client – Server và chức năng chat văn bản, truyền file qua Socket

Lập trình chức năng quản lý danh sách phòng chat và danh sách thành viên trong mạng

Nguyễn Duy Khánh Phân tích chức năng

Lập trình phần truyền file qua WiFi P2P

Lập trình module tìm kiếm thiết bị trong mạng

Lập trình chức năng xác định khoảng cách giữa các thiết bị

Nguyễn Văn Hưng Lập bảng kế hoạch thời gian thực hiện dự án

Phân tích chức năng

Phân tích và mô tả kịch bản kết nối và trao đổi

Page 7: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

6

dữ liệu giữa các thiết bị trong khi chat.

Lập trình chức năng của server

Nguyễn Bá Nguyên Phân tích chức năng

Nghiên cứu lý thuyết và đưa ra phương pháp lý thuyết tính khoảng cách gần đúng từ thiết bị đến các access point.

Lập trình chức năng tính toán khoảng cách

III. GIỚI THIỆU VỀ LẬP TRÌNH ỨNG DỤNG ANDROID

1. Hệ điều hành Android

Android là hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các

thiết bị di động như điện thoại thông minh (smartphone), máy tính bảng

(tablet),… Hiện nay, Android được hỗ trợ, phát triển bởi Google và Liên minh

thiết bị cầm tay mở (Open Handset Alliance).

Android có mã nguồn mở và Google phát hành mã nguồn theo Giấy phép

Apache. mã nguồn mở cùng với một giấy phép không có nhiều ràng buộc đã cho

phép các nhà phát triển thiết bị, mạng di động và các lập trình viên nhiệt huyết

được điều chỉnh và phân phối Android một cách tự do. Ngoài ra, Android còn có

một cộng đồng lập trình viên đông đảo chuyên viết các ứng dụng để mở rộng

chức năng của thiết bị, bằng một loại ngôn ngữ lập trình Java có sửa đổi. Những

yếu tố này đã giúp Android trở thành nền tảng điện thoại thông minh phổ biến

nhất thế giới, chiếm 81.0% thị trường hệ điều hành smartphone tính đến quý 3

năm 2013 (theo số liệu của IDC).

Hình dưới đây mô tả kiến trúc tổng quan của hệ điều hành Android:

Page 8: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

7

Hình 2: Kiến trúc hệ điều hành Android

2. Lập trình ứng dụng trên Android

Để tạo ứng dụng cho hệ điều hành Android, ta có nhiều phương pháp khác

nhau để lựa chọn. Trong đó, phương pháp chính do Google đề xuất và hỗ trợ là

sử dụng Android SDK và ngôn ngữ lập trình Java.

Android SDK là bộ công cụ phát triển phần mềm của Android, do Google

cung cấp. Android SDK cung cấp thư viện API và các công cụ cho lập trình viên

phát triển, gỡ lỗi và kiểm thử phần mềm cho Android.

Ngôn ngữ được sử dụng chính để lập trình ứng dụng cho Android là ngôn ngữ

Java. Tất cả các ứng dụng trên nền tảng Android trước khi chạy đều được biên

dịch thành một dạng mã trung gian có tên là Dalvik bytecode. Mã trung gian này

sau đó sẽ được thực thi qua máy ảo Dalvik Virtual Machine. Thư viện API do

Android SDK được viết bằng ngôn ngữ Java. Lập trình viên sử dụng các hàm

trong API để viết mã nguồn.

3. Lập trình ứng dụng mạng

Android Framework cung cấp cho người lập trình nhiều thư viện hỗ trợ cho

việc lập trình các ứng dụng liên quan tới mạng.

- java.net: là package chứa các class hỗ trợ cho lập trình mạng của Java API.

Page 9: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

8

- org.apache: thư viện do Apache Software Foundation phát triển và cung

cấp, tập trung chủ yếu vào HTTP và các giao thức liên quan.

- android.net: thư viện của Android Framework

IV. THIẾT KẾ CHƯƠNG TRÌNH

1. Thiết kế giao diện

Dưới đây là một số hình phác họa thiết kế giao diện của chương trình:

Hình 3: Màn hình chính

Hình 4: Màn hình danh sách phòng

chat

Page 10: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

9

Hình 5: Màn hình danh sách thành

viên

Hình 6: Màn hình chat văn bản

2. Truyền dữ liệu giữa các thiết bị.

2.1. Socket.

- Socket là một lớp nằm giữa lớp Application và lớp presentation trong mô

hình 7 lớp OSI. Nó cho phép phân phát dữ liệu tới các ứng dụng với 1 cổng

xác định. Tổ hợp giữa địa chỉ IP và số cổng tạo thành địa chỉ SOCKET.

- Mỗi thiết ứng dụng sẽ có gắn với 1 cổng nhất định. Ứng dụng sẽ nghe

ngóng trên cổng đó, khi có yêu cầu kết nối tới, nếu cổng rảnh thì sẽ chấp

nhận 1 kết nối. Kết nối sẽ được thiết lập giữa 2 thiết bị, nếu đã tồn tại kết

nối giữa 2 cổng này, thì kết nối đến sau sẽ không được kết nối.

2.2.Truyền dữ liệu.

Page 11: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

10

- Để truyền dữ liệu, chúng ta sử dụng socket. Khi ứng dụng Chat được bật

nên, nó sẽ tạo ra 1 socket tại một port có số hiệu cố định được chọn trước.

Mỗi khi có yêu cầu kết nối tới, phần mềm sẽ chấp nhận kết nối, sau khi kết

nối thành công, phần mềm sẽ tự động chuyển kết nối sang 1 cổng khác

(cổng có sẵn) để nhường lại cổng cố định của server cho việc nghe kết nối

từ các thiết bị khác.

2.3. Kịch bản trao đổi bản tin giữa các thiết bị trong mạng

Sau khi tạo server để lắng nghe và chấp nhận các yêu cầu kết nối từ các máy

khác, ta cần quy định các bước cần phải thực hiện khi trao đổi dữ liệu giữa các

thiết bị, cũng như định dạng các loại bản tin cho từng mục đích thông tin khác

nhau để thuận tiện cho quá trình truyền đạt và phân tích thông tin. Các mục dưới

đây trình bày các bước để truyền/nhận thông tin giữa các máy, phân chia theo

từng chức năng cụ thể.

a. Tìm kiếm và quản lý danh sách thành viên trong mạng cùng sử dụng phần

mềm

- Sơ đồ thuật toán.

Hình 7:Thuật toán tìm kiếm các thiết bị cùng sử dụng phần mềm trong

mạng

- Khi bắt đầu mở ứng dụng, nó sẽ tự động quét các địa chỉ IP trong mạng,

sau khi quét xong, phần mềm sẽ gửi bản tin thông báo đến tất cả các máy.

Nếu máy nào có cài đặt phần mềm và phần mềm đang chạy, nó sẽ gửi lại

bản tin phản hồi. Dựa vào bản tin phản hồi, các máy sẽ cập nhật lại danh

sách thành viên online (Sẵn sàng chat).

- Trong khi chạy ứng dụng, phần mềm sẽ tự động gửi bản tin thông báo đến

tất cả các máy có trong list, các máy nhận được bản tin thông báo sẽ gửi lại

Page 12: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

11

phản hồi. Khi nhận được phản hồi, phần mềm sẽ tự động cập nhật lại danh

sách.

Hình 8: Thuật toán cập nhật danh sách thành viên

b. Tạo, quản lý và tham gia phòng chat

Lập phòng Chat.

- Người lập phòng chat sẽ gửi bản tin thông báo về phòng chat mới tới tất

cả các máy trong list. Các máy nhận được sẽ hiển thị phòng chat trong

list.

- Người dùng gửi bản tin tìm phòng chat. Những máy trong mạng có

phòng chat sẽ phản hổi lại. Người dùng sẽ cập nhật danh sách phòng

chat dựa vào các bản tin phản hồi

Tham gia phòng chat.

- Một máy có khả năng tham gia nhiều phòng chat. Mỗi phòng chat sẽ có

1 ID xác định. Khi tham gia phòng chat, người dùng sẽ gửi yêu cầu tới

chủ phòng chat. Chủ phòng sẽ lưu lại địa chỉ người mới vào và thêm

người đó và danh sách thành viên của phòng.

c. Trò chuyện bằng tin nhắn văn bản

Khi người dùng gửi tin nhắn:

- Người dùng không phải là chủ phòng sẽ gửi tin nhắn đó cho chủ phòng

chat. Chủ phòng chat nhận được tin nhắn sẽ truyền lại cho các thành

viên còn lại.

Page 13: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

12

- Người dùng là chủ phòng sẽ gửi tin nhắn cho tất cả các thành viên trong

phòng.

d. Gửi/nhận file giữa các thành viên

- Người muốn gửi file gửi một tin nhắn dưới dạng tin nhắn trò chuyện

văn bản thông thường với một thuộc tính kèm theo chỉ ra đó là tin nhắn

mời thành viên khác nhận file. Đồng thời sẽ mở thêm một server port

khác để lắng nghe các yêu cầu truyền file từ các máy khác.

- Các thành viên còn lại khi nhận được tin nhắn có thuộc tính cho biết đó

là tin nhắn mời nhận file, nếu muốn tải file đó về máy mình thì sẽ tạo

socket kết nối tới server port phía người gửi dành để phục vụ cho việc

truyền file. Sau khi kết nối thành công, quá trình truyền/nhận file sẽ

được diễn ra giữa 2 thiết bị.

3. Phân chia các module chức năng

Để thực hiện các yêu cầu chức năng đã đề ra, phần mềm được thiết kế và triển

khai thành các module chức năng chính như sau:

- Module thực hiện chức năng tìm kiếm thiết bị có phần mềm đang hoạt động

trong cùng mạng LAN.

- Module thực hiện chức năng chat text

- Module thực hiện tính toán khoảng cách từ thiết bị Android tới điểm phát

sóng của WiFi Access Point.

- Module thực hiện chức năng truyền/nhận file

Các mục tiếp theo sẽ trình bày chi tiết hơn về từng module.

4. Module tìm kiếm thiết bị trong mạng LAN

Khi người dùng bật ứng dụng lên, module này có chức năng tìm kiếm các

thiết bị có trong cùng mạng LAN nhằm gửi bản tin thông báo đến các thiết bị

khác về sự có mặt của nó.

Thuật toán của module:

Page 14: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

13

Hình 9. Thuật toán tìm kiếm các thiết bị có trong mạng LAN

5. Module thực hiện chức năng chat text

Module này thực hiện các chức năng sau:

Lập phòng chat

Quản lý danh sách phòng chat

Quản lý danh sách các thành viên tham gia vào phòng chat

Page 15: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

14

Gửi tin nhắn trò chuyện dạng text giữa các thành viên

Sử dụng kĩ thuật lập trình mạng bằng Socket trong Java, ta thực hiện

truyền, nhận các bản tin mang thông tin thông báo và nội dung tin nhắn trò

chuyện giữa các thiết bị trong mạng.

Các bước cơ bản để tạo và tham gia một phòng chat:

Hình 10: Các bước tạo và tham gia phòng chat của chủ phòng và các thành

viên khác (khách)

Các bước để các thành viên trong một phòng chat gửi tin nhắn trò chuyện

với nhau được mô tả trong mục 2.3.c.

6. Module tính toán khoảng cách từ thiết bị tới bộ phát WiFi

a. Giới thiệu Việc định vị thiết bị smartphone trong khu vực thông qua wifi của

access point giúp cho việc quản lý mọi người trong một phạm vi nhỏ dễ dàng hơn

với chi phí thấp

Trong tương lai, khi mà hệ thống mạng wifi phát triển mạnh mẽ và có

quy hoạch rõ ràng, chúng em tin rằng khả năng định vị của smartphone thông qua

Page 16: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

15

access point wifi sẽ càng phát triển mạnh, gia tăng số lượng ứng dụng tiện ích và

có những ưu điểm vượt trội so với hệ thống GPS

b. Cơ sở lý thuyết Khi truyền sóng vô tuyến trong không gian, cường độ tín hiệu nhận được

tại máy thu sẽ bị suy hao bởi môi trường truyền sóng, khoảng cách truyền và tần

số truyền sóng

Theo nghiên cứu ta có được công thức suy hao của tín hiệu vô tuyến

trong không gian là:

PL (dbm) = 32,44 + 10nlogf + 10nlogD + αD (1)

Trong đó f : tần số sóng vô tuyến, đơn vị GHz( với sóng wifi f = 2,4 GHZ)

D: khoảng cách truyền sóng, đơn vị m

α: hệ số suy hao môi trường, đơn vị dbm/m ( tùy thuộc vào điều kiện

môi trường như mưa bão, khói bụi.. với môi trường đang xét trong văn phòng,

trường học thì α ≈ 0 )

n: hệ số suy hao đường truyền( phụ thuộc môi trường)

Môi trường Hệ số suy hao n

Không gian tự do 2

Đô thị 2,7 – 3,5

Trong nhà nhìn thẳng 1,6 – 1,8

Trong nhà có vật cản 4-6

Bảng 1: Hệ số suy hao của sóng vô tuyến theo môi trường

Cường độ tín hiệu nhận được tại máy thu ( ở đây là smartphone android )

được tính theo công thức:

RSSI (dbm) = Ptx + Gtx – PL + Grx (2)

Trong đó :

- RSSI : Cường độ tín hiệu nhận được (Received signal strength

indication )

- Ptx : Công suất phát của access point, đơn vị dbm

- Gtx : Tăng ích của access point, đơn vị dbm

- Grx : Tăng ích của máy thu ( smartphone), đơn vị dbm

- PL : Path Loss, suy hao đường truyền trong không gian

Ở đây Ptx, Gtx, Grx là các tham số cố định phụ thuộc vào từng loại

access point và smartphone. Do đó có thể thấy cường độ tín hiệu RSSI nhận được

của smartphone phụ thuộc chủ yếu vào khoảng cách của thiết bị với máy thu

access point

Từ (1) và (2) ta có công thức :

Page 17: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

16

RSSI (dbm) = Ptx +Gtx + Grx – 32,44 – 10nlogf – 10nlogD

Để đơn giản ta có thể viết lại là:

RSSI (dbm) = A + KlogD (3)

Trong đó A và K là hằng số, phụ thuộc vào loại thiết bị và môi trường

truyền sóng, ta có thể đo được A và K bằng kết quả thực nghiệm

Từ (3) ta có thể suy ra khoảng cách giữa điện thoại và access point:

D = 10(-A+RSSI)/K (m)

c. Các vấn đề gây nhiễu Các vấn đề gây nhiễu làm ảnh hưởng đến kết quả đo : shadowing và fading

- Shadowing : hiện tượng tín hiệu thu được bị suy giảm do có sự che khuất của vật cản

Bảng 2: Cường độ tín hiệu suy giảm qua các chất liệu

- Fading : Cường độ tín hiệu thu dao động nhanh khi MS dịch chuyển một khoảng cách nhỏ, nguyên nhân gây pha đinh nhanh là do tín hiệu thu là tổng hợp của nhiều thành phần đền từ nhiều hướng khác nhau với cường độ,

pha hoặc tần số khác nhau, ngẫu nhiên theo thời gian

Page 18: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

17

Hình 11: Hiện tượng fading, multipath

Hình 12: Mô hình suy hao fading sử dụng

Qua biểu đồ trên ta thấy các ảnh hưởng do shadowing và fading làm cho

thông số RSSI thu được có sai lệch khá lớn ± 10dbm

Page 19: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

18

» Do đó để giảm sai số khuyến nghị khoảng cách thực hiện tính toán nên

nhỏ hơn hoặc bằng 30m và đo trong tầm nhìn thẳng không có vật cản

d. Kết quả thực nghiệm Vì các thông số Ptx, Gtx, Grx của acess point và mobile không thể xác định

trực tiếp bằng các công cụ có sẵn trên mobile, hơn nữa nhà sản xuất cũng không

công bố các thông tin trên của thiết bị vì thế chúng em xin phép được tối ưu các

thông số trên thông qua các phép đo thực nghiệm

Thực nghiệm quá trình đo với môi trường trong phòng không có vật cản,

thiết bị sử dụng là Access point: tenda w311r, smartphone: lenovo A390

Khoảng cách D(m)

Lần đo 1 RSSI( dbm)

Lần đo 2 RSSI (dbm)

Lần đo 3 RSSI(dbm)

Giá trị sử dụng (dbm)

1 -36 -36 -35 -35 2 -42 -43 -42 -42 3 -45 -46 -46 -46

Bảng 3: Kết quả thực nghiệm đo cường độ RSSI

Từ các kết quả đo ứng với khoảng cách 1m và 2m ta được hệ phương trình

là:

RSSI(1m)= A + Klog1

RSSI(2m)= A + Klog2

Suy ra A = -36

K = -20

Thay lại A= -36, K = -20, vào công thức với D= 3m ta được:

RSSI= -45,54 ≈ -46 dbm ( thỏa mãn)

Vậy ta có công thức tính khoảng cách từ smartphone Lenovo A390 tới

acess point tenda w311r là:

RSSI(dbm)= -36 - 20logD

Suy ra

D = 10-(RSSI + 36)/20 m

7. Module thực hiện chức năng truyền/nhận file

7.1. Truyền file bằng Socket

Khi người dùng đang trò chuyện với các người dùng khác bằng tin nhắn

văn bản, người dùng có thể lựa chọn một tập tin bất kì trong bộ nhớ của thiết bị

và gửi lời mời nhận file tới các thành viên khác đang tham gia cùng phòng chat

với mình. Module chức năng này đảm nhận thực hiện quá trình gửi các bản tin

thông báo liên quan đến việc gửi file và việc truyền, nhận file giữa các thiết bị.

Page 20: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

19

Việc gửi, nhận các bản tin thông báo và việc truyền, nhận dữ liệu của file

vẫn được thực hiện dựa trên kĩ thuật lập trình Socket trong Java. Ở đây, ngoài

server phục vụ cho việc truyền nhận các bản tin thông báo và tin nhắn văn bản, ta

còn tạo và duy trì một Server Socket trên thiết bị muốn gửi file để đóng vai trò là

server phục vụ các máy có nhu cầu nhận file.

7.2. Truyền file sử dụng WiFi P2P

WiFi P2P (WiFi Direct) là một tính năng mới được hỗ trợ trên Android từ

phiên bản Android 4.0 (API level 14) với điều kiện thiết bị có phần cứng hỗ trợ.

WiFi P2P cho phép các thiết bị kết nối với nhau trực tiếp qua WiFi mà không cần

thông qua một access point trung gian. Sử dụng WiFi P2P, ta có thể tìm kiếm và

kết nối, cũng như truyền dữ liệu giữa các thiết bị được hỗ trợ tính năng này với

nhau.

V. TRIỂN KHAI THỰC HIỆN

1. Module tìm kiếm các thiết bị có trong mạng LAN

Hình 13. Thuật toán tìm kiếm các thiết bị có trong mạng LAN

Page 21: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

20

Bước 1: Tìm dải địa chỉ tìm kiếm:

- Xác định địa chỉ IP của mạng con.

- Xác định số bit địa chỉ dùng cho Net ID và Host ID.

- Xác định dải địa chỉ để tìm kiếm là dải địa chỉ tương ứng với Host ID.

Bước 2: Xét từng địa chỉ IP trong dải tìm kiếm, thực hiện lần lượt các

phương thức để xác định thiết bị có trong mạng tương ứng với địa chỉ IP

Bước 2.1. Đọc trong file ARP lần 1:

- Xác định được địa chỉ của Router bằng cách đọc trong file ARP được lưu ở

đường dẫn /proc/net/arp.

- Nếu tìm thấy địa chỉ MAC trong bảng ARP thì thêm đối tượng với địa chỉ IP

này vào.

Bước 2.2. Ping

Ping đến địa chỉ IP này, nếu nhận được phản hồi trước khi timeout thì thêm đối

tượng với địa chỉ IP này vào.

Bước 2.3. Đọc trong file ARP lần 2:

- Đọc trong file ARP được lưu ở đường dẫn /proc/net/arp.

- Nếu tìm thấy địa chỉ MAC trong bảng ARP thì thêm đối tượng với địa chỉ IP

này vào.

Bước 2.4. Dùng phương thức TCP

Kết nối TCP qua các cổng 139, 445, 22 và 80, nếu nhận được phản hồi kết nối

thành công thì thêm đối tượng với địa chỉ IP này vào.

Trong đó:

- Port 139 và 445 được sử dụng để truy cập vào tài nguyên share trên máy tính

khác cùng trong mạng Lan theo giao thức BIOS và TCP

139: NetBIOS Session Service

445: Microsoft-DS SMB file sharing

Page 22: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

21

- Port 22: Secure Shell (SSH) — used for secure logins, file transfers (scp, sftp)

and port forwarding

- Port 80: HTTP

Bước 2.5. Đọc trong file ARP lần 3:

- Đọc trong file ARP được lưu ở đường dẫn /proc/net/arp.

- Nếu tìm thấy địa chỉ MAC trong bảng ARP thì thêm đối tượng với địa chỉ IP

này vào.

Bước 3: Tiếp túc thực hiện như vậy đến hết dải tìm kiếm ta được một danh

sách các đối tượng với địa chỉ IP đang ở trong cùng mạng LAN Wifi.

2. Các loại bản tin thông báo truyền giữa các thiết bị

Để các thiết bị trao đổi bản tin mang nội dung các lời yêu cầu cũng như

phản hồi cho các yêu cầu, các thông tin thông báo về trạng thái, các bản tin trao

đổi giữa các thiết bị được chia làm các loại sau:

HELLO_WORLD: là bản tin mà thiết bị gửi tới tất cả các thiết bị khác

trong mạng để thông báo sự có mặt của mình trong mạng khi mới tham

gia vào mạng

ADV_SELF: bản tin mang thông tin về cá nhân mình trong mạng. Các

thông tin bao gồm tên, danh sách các phòng chat do mình lập, khoảng

cách từ vị trí của mình tới các bộ phát sóng WiFi gần đó

ADV_ROOM: bản tin chứa danh sách các phòng chat do mình lập,

được gửi tới các người dùng khác để thông báo về các phòng do mình

quản lý

ADV_NEW_ROOM: bản tin chứa thông tin về 1 phòng chat vừa được

tạo. Khi người dùng tạo ra một phòng chat mới, người dùng sẽ gửi bản

tin này tới tất cả các người dùng khác để thông báo về một phòng mới

được tạo.

ADV_FILE: bản tin chứa thông tin về tên file và kích thước file mà ta

muốn truyền cho các thành viên khác trong phòng chat.

REQ_UPDATE_ROOM: lời yêu cầu cập nhật danh sách phòng chat

mới nhất, được gửi cho tất cả các người dùng trong mạng để cập nhật

danh sách phòng chat đang có trong mạng.

Page 23: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

22

REQ_JOIN_ROOM: là lời yêu cầu tham gia vào một phòng chat mà ta

gửi tới người quản lý phòng đó để thông báo về việc mình muốn tham

gia vào phòng chat đó.

ALLOW_JOIN_ROOM: bản tin mà người quản lý phòng chat phản hồi

lại cho bản tin REQ_JOIN_ROOM của một thành viên khác gửi tới để

thông báo cho thành viên đó được phép tham gia vào phòng chat.

TEXT_MESSAGE: là bản tin chứa nội dung tin nhắn trò chuyện văn

bản giữa các thành viên trong phòng chat với nhau.

3. Thực hiện chức năng trò chuyện bằng văn bản (chat text)

Module chức năng chat text được triển khai thực hiện dựa trên thuật toán và

phương thức được mô tra trong mục 2.3, phần IV. Khi triển khai sử dụng các loại

bản tin được mô tả trong mục 2 ở trên.

4. Thực hiện tính toán khoảng cách thiết bị tới bộ phát sóng WiFi

- Từ nghiên cứu lý thuyết và đo thực nghiệm, ta xây dựng được công thức

tính khoảng cách từ thiết bị đến Access Point như sau:

D = 10^[-(RSSI + 36)/20] m

- Tìm danh sách các Access Point, tương ứng với mỗi Access Point ta thu

được cường độ tín hiệu thu RSSI. Áp dụng công thức trên ta tính toán được

khoảng cách từ thiết bị đến các Access Point xung quanh nó.

- Theo một chu kỳ định sẵn, thiết bị sẽ gửi bản tin mang thông tin về

khoảng cách giữa nó với các Access Point cho các thiết bị khác.

- Thông tin về khoảng cách từ một thiết bị tới các bộ phát sóng được bao

gồm trong bản tin ADV_SEFL mà thiết bị gửi tới cho các máy khác. Các máy

khác khi nhận được bản tin này sẽ phân tích và đọc được kết quả.

5. Thực hiện chức năng truyền và nhận file thông qua socket

Khi một máy muốn truyền file cho các máy khác trong mạng, máy đó sẽ

đóng vai trò là server. Các máy trong mạng muốn nhận được file thì sẽ kết nối với

máy server đó trong vai trò client. Server sẽ xử lý yêu cầu của từng client trong

từng thread riêng biệt. Dưới đây là sơ đồ flow chart mô tả các bước xử lý của

chức năng này:

Page 24: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

23

Hình 14: Các bước xử lý của File Server Hình 15: Các bước xử lý của client

Các class thực hiện chức năng server và client tương ứng là

FileServerThread và FileClient.

6. Truyền và nhận file sử dụng WiFi P2P

Trước hết, để sử dụng tính năng WiFi P2P, ta cần thay đổi yêu cầu phiên

bản SDK tối thiểu từ phiên bản10 (Android 2.3.3) lên phiên bản 14 (Android 4.0).

Các hàm API do Android cung cấp giúp việc thực hiện kết nối 2 thiết bị dễ dàng

hơn và không yêu cầu người lập trình phải viết nhiều mã nguồn.

Chức năng này được triển khai thực hiện dựa trên hướng dẫn trên website

Android Developer

(www.developer.android.com/guide/topics/connectivity/wifip2p.html).

Page 25: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

24

VI. KẾT QUẢ VÀ ĐÁNH GIÁ Sau khi hoàn thành các bước phân tích, thiết kế, lập trình và phát triển ứng

dụng, nhóm tiến hành chạy thử ứng dụng để kiểm nghiệm và sửa lỗi nếu phát

sinh.

Qua một thời gian chạy thử và kiểm nghiệm, chúng em nhận thấy kết quả

của ứng dụng như sau:

- Về cơ bản, thực hiện được các yêu cầu chức năng đề ra.

- Hoạt động chính xác

- Phần mềm chạy nhanh, gặp ít lỗi.

- Phần mềm có giao diện dễ sử dụng và chiếm ít tài nguyên của thiết bị.

Trên đây là kết quả đã đạt được trong thời gian thực hiện đề tài này. Tuy đã

đạt được một số mục tiêu ban đầu nhưng phần mềm còn một số điểm chưa hoàn

thiện như :

- Chưa có chức năng chat voice

- Chưa lưu được lịch sử hoạt động của người dùng, của phòng chat

- Việc tính toán khoảng cách ở giá trị lớn còn bị sai số cao.

- Trong khi hoạt động còn có thể gặp một số bug nhỏ tuy nhiên không ảnh

hưởng lớn tới quá trình sử dụng của người dùng.

Trong thời gian tiếp theo, mục tiêu của chúng em là tiếp tục phát triển thêm

với các tính năng :

- Thêm chức năng chat voice.

- Lưu lại lịch sử các phòng chat, các cuộc đối thoại.

- Cải tiến giao diện thêm sinh động, bắt mắt người dùng.

- Thêm các icon biểu cảm sinh động trong khi chat text.

- Tăng độ chính xác của thuật toán tính toán khoảng cách.

- Tối ưu thuật toán, cải thiện tốc độ khởi động chương trình

- Tối ưu mã nguồn của phần mềm.

Ngoài những kết quả đạt được của phần mềm, qua việc thực hiện project

này, chúng em đã thu nhận và củng cố được thêm nhiều kiến thức về: mạng máy

tính, lập trình mạng, lập trình Android.

Trên đây là những kết quả đạt được, đánh giá của chúng em về kết quả đó

và mục tiêu phát triển tiếp theo cho đề tài. Qua việc thực hiện đề tài này, chúng

Page 26: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

25

em đã đạt được nhiều kết quả hữu ích: nâng cao và củng cố kiến thức về mạng

máy tính; tìm hiểu về lập trình ứng dụng cho hệ điều hành Android; kinh nghiệm

làm việc nhóm và quy trình phát triển một sản phẩm phần mềm.

Cuối cùng, chúng em xin dành lời cảm ơn chân thành đến thầy giáo Tiến Sĩ

Trần Minh Trung đã tận tình hướng dẫn nhóm em trong suốt thời gian thực hiện

đề tài để đạt được kết quả này.

Page 27: 6ET4280 - Nhom 3 - Phan Mem Chat Tren Android

26

VII. TÀI LIỆU THAM KHẢO

[1] Slide bài giảng Quản trị mạng TCP/IP, thầy Trần Minh Trung.

[2] TCP/IP Network Administration, O’Reilly, Second Edition 1997.

[3] TCP/IP Network Application Guide, SunSoft.

[4] TCP/IP Tutorial and Technical Overview, IBM RedBooks.

[5] http://developer.android.com/index.html