Nguyễn Viết Khánh – Công nghệ phần mềm - K48 38 Di động gửi yêu cầu nhận dữ liệu đến Server. Server nhận yêu cầu từ phía Client. Khi có sự chuyển động xảy ra, Server sẽ gửi dữ liệu đến cho Client. Client nhận dữ liệu từ phía Server và hiển thị dữ liệu lên màn hình. Công việc tiếp tục được lặp lại cho đến khi Client hoặc Server gửi tín hiệu ngừng hoạt động chương trình
Hình 20: Mô tả luồng Mobile yêu cầu ngắt kết nối
Khi Client muốn đóng chương trình, Client sẽ gửi yêu cầu thoát đến cho Server. Khi Server nhận được yêu cầu thoát từ phía Client, Server sẽ đóng luồng xử lý kết nối với Client. Đồng thời Client cũng đóng luồng xử lý với Server.
Nguyễn Viết Khánh – Công nghệ phần mềm - K48 39
Hình 21: Mô tả luồng Mobile yêu cầu ngắt kết nối
Khi đóng chương trình, Server sẽ gửi yêu cầu thoát cho Client. Khi Client nhận được yêu cầu thì cả Server và Client đều đóng luống kết nối giữa chúng lại
Các bước hoạt động
- Bước 1: Tạo một Socket để thiết lập kết nối
- Bước 2: Lấy địa chỉ IP và cổng mà Server đang lắng nghe - Bước 3: Thiết lập kết nối với Server
o Sau khi kết nối được thiết lập, Mobile gửi dữ liệu chứa tài khoản và mật khẩu cho Server để đăng nhập vào hệ thống và đợi dữ liệu kết quả gửi về từ Server
o Nếu đăng nhập đúng thì Server trả về dữ liệu thể hiện đăng nhập thành công, chuyển sang bước 4
o Nếu đăng nhập sai thì Server trả về dữ liệu thể hiện đăng nhập không thành công, lúc này mobile hiển thị lỗi đăng nhập tài khoản lên màn hình, quay trở lại bước 3
- Bước 4: Di động gửi yêu cầu nhận dữ liệu đến cho Server, sau đó đợi đến khi nhận được dữ liệu
- Bước 5: Nhận dữ liệu từ Server gửi về, xử lý dữ liệu
o Nếu là dữ liệu báo không có chuyển động thì chuyển sang bước 6 o Nếu là dữ liệu báo ngắt đến từ Server thì dừng luồng lại, đóng luồng o Nếu là dữ liệu chứa ảnh, thì cho ảnh hiển thị lên màn hình
Nguyễn Viết Khánh – Công nghệ phần mềm - K48 40 - Bước 6: Lặp lại quá trình gửi yêu cầu – nhận dữ liệu, quay trở lại bước 4
Các ngoại lệ xảy ra:
- Khi di động yêu cầu đóng chương trình, thì luồng hoạt động sẽ gửi yêu cầu đóng kết nối đến cho Server. Sau đó luồng ngắt kết nối với Server và đóng luồng lại
Mã giả:
procedure void run()
open() // mở kết nối với Server while( true )
if isStop = false // nếu không có tín hiệu dừng chương trình
request(“GET”) // gửi yêu cầu dữ liệu đến Server recevie() // nhận dữ liệu từ Server gửi về
else
break // khi có tín hiệu đừng chương trình thì thoát khỏi //vòng lặp
end if end while
close() // đóng kết nối lại end procedure
procedure request( String str ) dos.writeUTF( str )
dos.flush() end procedure
procedure receive() { len = dis.readLong()
if len = 1 // báo hiệu không có chuyển động return
else if len = 2 { // báo hiệu đóng kết nối isStop = true;
return end if
end if
// xử lý dữ liệu nhận được tạo thành file Image dis.readFully(bytes)
Image i = Image.createImage(byte) // hiển thị ảnh lên màn hình frmMain.append( i )
Nguyễn Viết Khánh – Công nghệ phần mềm - K48 41 display.setCurrent (frm Main)
end procedure