Khai báo thêm biến counter.Trong hàm initialize khởi tạo giá trị cho counter = 10 Trong hàm handleMessage, giảm giá trị counter xuống 1 đơn vị mỗi khi có gói tin đến.. Ở đây chúng ta sẽ
Trang 1BÁO CÁO LAB 1
Trang 2I YÊU CẦU 1 – Tìm hiểu phần mềm OMNET++
1 Làm quen với OMNET++ bằng xây dựng mô hình mạng tictoc đầu tiên.Bước 1: Tạo project với tên là demo_tictoc
Bước 2: Tạo tập tin mô phỏng mạng tictoc1.ned
Trang 3Bước 3: Chuyển qua tab Source và viết code
Trang 4Cùng với code
Trang 5#include<omnetpp.h>
using namespace omnetpp;
class Computer : public cSimpleModule
{
protected:
// The following redefined virtual function holds the algorithm.
virtual void initialize();
virtual void handleMessage(cMessage *msg);
Trang 6Bước 5: Build Project
Bước 6: Tạo và cấu hình tập tin ini
Tạo tập tin *.ini
Trang 7Nhấn Next > Next Ta được
Trang 8Hoặc chỉnh lại bằng code trong tập tin ini với tên network đã khai báo trong tập tin tictoc1.ned
Bước 7: Chạy mô phỏng
Trang 9Bấm Run để chạy mô phỏng, Stop để dừng.
2 Cải tiến mô hình mạng TicToc.
a Thiết lập thêm icon cho computer1 và computer2
Sửa lại source code tập tin tictoc1.ned như sau
Trang 10Sau đó ta được
b Giới hạn số gói tin gửi đi giữa computer1 và computer2 là 10 gói.
Trang 11Khai báo thêm biến counter.
Trong hàm initialize() khởi tạo giá trị cho counter = 10
Trong hàm handleMessage(), giảm giá trị counter xuống 1 đơn vị mỗi khi có gói tin đến Nếu couter = 0 thông báo computerX đã hết gói tin, ngược lại in ra số gói tin còn lại
Trang 12c Thêm cấu hình vào tệp tin omnetpp.ini để giới hạn số lượng gói tin.
Tạo tập tin tictoc4.ned với code như sau.
Trang 13Sửa lại tập tin omnetpp.ini
Kết quả
Trang 14d Kế thừa
Tạo tập tin tictoc5.ned với code như sau
Trang 15Tạo tập tin txc5.cc giống với txc4.cc nhưng thay Txc4 thành Txc5
Trang 16Chỉnh lại tập tin omnetpp.ini
Build và chạy mô phỏng
Trang 17II Yêu cầu 2 – Thực hành tictoc tutorial để làm quen với môi trường Omnet++
1 Lập mô hình xử lý trễ.
Trong các mô hình trước, tic và toc đã gửi ngay tin nhắn ngay khi đã nhận Ở đây chúng ta sẽ chờ một khoảng thời gian: tic và toc sẽ giữ thông điệp trong 1s mô phỏng sau đó gửi lại cho bên kia Trong OMNeT++ thời gian đó đạt được bằng mô-đun hẹn giờ tự gửi tin nhắn
Tạo tập tin tictoc6.ned tương tự tập tin tictoc1.ned
Trang 18Tạo tập tin txc6.cc
Trang 19Khai báo thêm 2 biến con trỏ là event và tictocMsg.
Biến event sẽ được gửi khi đến một thời gian nhất định
Biến tictocMsg là biến lưu trữ giá trị tin nhắn.
Trang 20Trong hàm initialize() khai báo thông điệp “event” cho biến event, và sau đó ưu tiên máy có tên tic sẽ gửi thông điệp trước.
Tại dòng scheduleAt(5.0, event) Hàm này có chức năng lập lịch, hẹn một khoảng thời gian t ở đây là 5.0s rồi kích hoạt sự kiện handleMessage() với tham số là event.
Trong hàm handleMessage() sẽ kiểm tra xem nếu là thông điệp tự gửi của máy tic:
if(msg == event) sẽ gửi về máy Toc thông điệp “tictocMsg” được lưu trong biến tictocMsg
Khi thông điệp đến máy Toc hàm handleMessage() sẽ chạy trường hợp else bên trên lúc này mã chạy đến dòng scheduleAt(simTime()+1.0, event) Bộ lập lịch sẽ chờ một
khoảng thời gian là 1.0s rồi sẽ tự kích hoạt sự kiện handleMessage(), sau đó sẽ là máy
Toc gửi thông điệp đến máy Tic và quá trình sẽ lặp đi lặp lại mãi.
Trang 212 Số ngấu nhiên và tham số.
Trong bước này chúng ta sẽ giới thiệu số ngẫu nhiên Chúng ta thay đổi độ trễ từ 1s sang một giá trị ngẫu nhiên có thể được thiết lập từ tập tin NED hoặc omnetpp.ini Các tham số của mô đun có thể trả về các biến ngẫu nhiên; tuy nhiên, để sử dụng tính
năng này chúng ta phải đọc tham số trong handleMessage() mỗi khi chúng ta sử
dụng nó
Tạo tập tin tictoc7.ned
Trang 22Với biến delayTime là một biến có giá trị ngẫu nhiên
Tạo tập tin txc7.cc
Trang 23Hàm uniform() tạo ra giá trị ngẫu nhiên trong [0;1], nếu giá trị < 0,1 thì giả lập bị mất
gói tin (thông điệp)
Biến delayTime sẽ có giá trị ngẫu nhiên, và mỗi lần lập lịch thì thời gian sẽ khác
nhau chứ không cố định như bước trên
Chỉnh sửa tệp omnetpp.ini
Tạo ra giá trị ngẫu nhiên cho biến delayTime.