1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tập lớn môn học chuyên đề công nghệ agent

22 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 72,89 KB

Nội dung

Delegation một cách trong suốthoàn toàn có thể thực hiện được vì khả năng của các agent cũng chính là nhữngdịch vụ mà nó cung cấp chứ không phải là việc tích hợp khả năng đó vào thư viện

BÀI TẬP LỚN MÔN HỌC CHUYÊN ĐỀ CÔNG NGHỆ AGENT OAA - Open Agent Architect Kiến trúc OAA Tổng quan OAA multi-agent framework tập trung vào việc hộ trợ việc tương tác mềm dẻo cộng đồng động, đa dạng agent phần mềm Ý tưởng chủ yếu OAA delegation: thay cho việc agent phải mã hố cứng hành vi nó, lý giải tương tác với agent nào, agent OAA biểu diễn tương tác dạng điều cần cho agent đặc biệt khác (facilitator agent) Agent phối hợp hoạt động cộng đồng agent để hoàn thành công việc, cung cấp dịch vụ xử lý song song failure handling phát xung đột client agent quan tâm tới vần đề Mục đích việc thiết kế mơ hình OAA Ngày nay, kỹ thuật lập trình dựa agent (agent-based programming) nhắc đến nhiều thuật ngữ kĩ thuật Trong môi trường OAA, agent hoạt động cách độc lập phối hợp với hệ thống mạng phân tán chúng lập trình ngơn ngữ bậc cao, chúng có khả hoạt động tính tốn cách độc lập Mục tiêu khái niệm OAA nói đến cách chi tiết, nên đây, ta đề cập cách ngắn gọn khái niệm này: 2.1 Khả phối hợp hoạt động OAA tập trung vào ý tưởng cộng đồng agent tham gia vào giải công việc chung Mặc dù thiết kế agent để giải tất công việc chuyên nghiệp ta thiết kế agent “chuyên gia” (expert agent) agent đảm nhận công việc khác Trong môi trường OAA, phần lớn yêu cầu user giải với nhiều agent Do đó, việc phối hợp hoạt động agent phải thật tốt, để đảm bảo khơng có agent phải hoạt động tải 2.2 Sự hoạt động phân tán Cộng đồng agent đa dạng, cho phép agent chạy mơi trường khác nhau, viết ngôn ngữ khác Môi trường OAA cung cấp số quy tắc chuẩn để agent hoạt động liên kết với Sự hoạt động phân tán mở khả khả tính tốn song song nhiều agent thực thi phần khác công việc 2.3 Sự thích nghi Khi có thành viên tham gia vào cộng đồng agent, hoạt động tương tác agent nhìn chung có thay đổi Nếu agent tham gia vào hoạt động cộng tác, tương tác agent phải đủ linh hoạt, mềm dẻo phép agent tham gia hoạt động Kiến trúc “plug & play” cho phép xây dựng hệ thống với agent tồn từ trước dễ dàng phát triển tính cho agent cũ xây dựng agent 2.4 Truyền thơng agent Bởi người ln muốn tham gia vào hệ thống cách linh hoạt nên cần phải có ngơn ngữ đủ mạnh, đủ linh hoạt để diễn tả ngơn ngữ tự nhiên Nếu ngơn ngữ ICL (Interagent Communication Language) diễn đạt cách đầy đủ ngôn ngữ tự nhiên ta hồn tồn xây dựng câu lệnh, thủ tục tương tác 2.5 Hoạt động tái hoạt động tính tốn Agent khơng nguồn liệu thụ động thực hành động trả lời thông tin theo yêu cầu Các agent giám sát hoạt động mơi trường xung quanh định thực hành động, thực hành động nào, cảnh báo cho người dùng tình thích hợp Hơn nữa, agent theo dõi tương tác agent khác đưa giải pháp để hệ thống hoạt động tốt 2.6 Client Agents Mỗi agent OAA facilitator agent client agent Client Agent gọi Client xét khía cạnh client facilitator đó, facilitator cung cấp đối thoại dịch vụ cần thiết cho client Khi cần, client agent thực kết nối tới facilitator – parent facilitator Với kết nối này, agent khai báo cho parent agent biết dịch vụ mà cung cấp Khi dịch vụ agent yêu cầu, facilitator gửi yêu cầu tới agent (sử dụng ICL) Agent phân tích yêu cầu, thực trả kết quả, báo cáo cho facilitator Trong trình yêu cầu, agent sử dụng số chức OAA cung cấp 2.7 Facilitator Agents Facilitator server agent chuyên dụng, chịu trách nhiệm liên kết hoạt động, đối thoại agent đồng thời giải vấn đề vướng mắc nảy sinh Trong nhiều hệ thống, facilitator dùng để cung cấp liệu tồn cục cho client agents, cho phép agent client chấp nhận tương tác qua chế blackboard Facilitator cịn trì mối quan hệ agent, thông báo khả agent hệ thống, sử dụng thông tin để trợ giúp cho trình yêu cầu cung cấp dịch vụ hệ thống Chức trung tâm facilitator khả delegation cách suốt Có nghĩa agent yêu cầu tạo yêu cầu, facilitator hiệu chỉnh yêu cầu mà không cần agent yêu cầu phải biết thơng tin tính đồng hay vị trí xác agent cung cấp Delegation cách suốt hồn tồn thực khả agent dịch vụ mà cung cấp khơng phải việc tích hợp khả vào thư viện chung 2.8 Truyền thông agent Ngôn ngữa ICL (Interagent Communication Language) OAA ngơn ngữ giao tiếp truyền thông agents mà không cần biết agent chạy máy nào, viết ngôn ngữ ICL thiết kế mở rộng ngôn ngữ Prolog, kế thừa ưu điểm, hợp lí thống Prolog Trong ICL có số từ khố, số thành phần đặc biệt sử dụng câu lệnh ICL, bao gồm khả khai báo biến, kiện, yêu cầu dịch vụ, đáp ứng yêu cầu, chia sẻ thành phần liệu 2.9 Sự quản lí quyền thực thi Hiện nay, khác chế ngôn ngữ, platform nên việc cài đặt, thực thi hoạt động agent thích hợp Điều giải nhiều rắc rối gặp phải khởi động hệ thống trì cho hệ thống hoạt động thơng suốt Hệ thống OAA có trình quản lý việc thực agent (Execution Manager) để quản lí hoạt động thực thi gọi StartIt Khi tập agent liên kết hoạt động để thực số nhiệm vụ đó, Start-It cung cấp khả cài đặt agent platform thích hợp với agent Theo giao thức hoạt động platform này, cần agent có u cầu kết nối tới facilitator chắn agent hoạt động Một chức quan trọng khác Start-It giám sát trạng thái agent xem chúng hoạt động có xác không? Nếu Start-It phát thấy agent hoạt động khơng đúng, thực số bước để phục hồi lỗi tự khởi động lại agent Cơ sở hạ tầng Agent Trong phần này, xem xét giải thích thành phần OAA cách chi tiết, để giúp người phát triển OAA có nhìn hoạt động thành phần OAA 3.1 Thư viện Agent Thư viện agent cung cấp hàm chức cho agent OAA, bao gồm agent facilitator Thư viện chuyển sang nhiều ngôn ngữ khác phần thư viện chế cài đặt agent Lập trình viên cần phải gọi hàm cung cấp thư viện, khai báo biến, định nghĩa hàm callback có sẵn thư viện Trong phần này, ta mô tả qua vài thành phần thư viện agent số cách sử dụng thư viện chung cho agent 3.2 Giao thức giao vận Agent Hiện nay, hệ thống dựa mơ hình OAA sử dụng TCP/IP giao thức vận chuyển TCP cài nhiều hệ điều hành khác Unix, Macintosh, Dos, MS Windows nên việc sử dụng TCP/IP linh hoạt, thuận tiện cho việc tương tác agent chạy khác Tuy nhiên, OAA thiết kế cho cho phép sử dụng nhiều giao thức giao vận khác Điều cài đặt API với lớp giao vận Lớp giao vận lớp riêng, tải riêng rẽ từ phần lại số thủ tục thư viện Những thủ tục lớp giao vận có tên với tiền tố com_ Mọi việc truyền thông agent thông qua thủ tục API 3.3 Ngơn ngữ ICL Như nói trên, phần truyền thông agent, biểu thức ICL sử dụng để khai báo solvable, kiện, yêu cầu sử dụng dịch vụ, đáp ứng dịch vụ, chia sẻ liệu thành phần Một số framework agent điều khiển lời nói FIPA hay KQML, ICL cịn có lớp giao thức đối thoại Lớp đối thoại ICL định nghĩa kiểu kiện, kết hợp với danh sách tham số để tổ chức thành kiểu kiện Nội dung lớp bao gồm kết trả về, chế kích hoạt, liệu thành phần nhúng vào kiện khác Ta hồn tồn nhúng thêm nội dung hàm thành phần viết ngôn ngữ khác vào kiện ICL, ưu điêm lớn ICL Với chế này, không cung cấp cho facilitator thêm nhiều thông tin chất yêu cầu từ agent khác mà giúp facilitator phân loại yêu cầu 3.3.1 Khai báo solvable agent Mỗi agent tham gia vào hệ thống OAA phải khai báo, đưa khả nó, dịch vụ cung cấp thơng qua ngơn ngữ ICL Điều thiết lập giao diện mức cao agent, giao diện facilitator sử dụng việc liên kết, truyền thông agent để đáp ứng yêu cầu agent khác Một yếu tố quan trọng khả agent kiểu (type) cung cấp, khả cung cấp thủ tục (procedure solvable), liệu (data solvable) chế kích hoạt (trigger) Khả cung cấp thủ tục liệu agent khác sử dụng cách trực tiếp (thường agent sử dụng khả cách gọi thủ tục oaa_Solve thư viện) Ở mức khái niệm, solvable cung cấp thủ tục (procedure) thực hành động đó, cịn solvable cung cấp liệu (data) lưu giữ tập cơng việc Ví dụ: Ta tạo agent cho hệ thống mail, solvable cung cấp thủ tục việc gửi message tới người sử dụng, liệt kê thông điệp gửi đến theo chủ đề hay hiển thị thơng điệp lên hình, cịn solvable cung cấp liệu tương ứng với quan hệ với sở liệu Thường solvable cung cấp liệu sử dụng để cung cấp kho liệu dùng chung Solvable kích hoạt (trigger) khơng thể truy nhập trực tiếp từ agent khác, chúng sử dụng gián tiếp thông qua việc thiết lập kích hoạt cơng việc (task trigger) chúng Khả để phục vụ cho kiện xảy điều kiện đặc biệt Ví dụ: email agent khai báo khả kích hoạt nhằm kiểm tra thư đến Chú ý có nhiều kiểu kích hoạt, task trigger kiểu Một agent khai báo khả chúng cách sử dụng oaa_Declare oaa_Undeclare thư viện 3.3.2 Sự kiện Việc truyền thông agent diễn dạng kiện, hoạt động cấu trúc agent tổ chức thành kiểu kiện Trong việc đối thoại agent, điều giúp ích cho việc nhìn nhận kiện thông điệp Phần lớn kiện cần thiết có thư viện nên khơng cần lập trình viên viết lại, ta xem oaa_Solve oaa_AddTrigger Ví dụ: lời gọi oaa_Solve(Goal, Params) agent A đó, kết trả có dạng ev_solve(GoalId, Goal, Params) từ A tới facilitator trả thơng điệp có dạng ev_solved(GoalId, Requestees, Solvers, Goal, Params, Solutions) Do kiện tự động xử lí thơng suốt, nên lập trình viên khơng cần quan đến chúng cách chi tiết 3.3.3 Yêu cầu dịch vụ Một agent yêu cầu dịch vụ cách gửi mục tiêu cần đạt tới facilitator Mỗi yêu cầu có hay nhiều khả giải Thư viện OAA cung cấp cho agent chế truy nhập đơn thống để yêu cầu dịch vụ từ agent khác, xem oaa_Solve oaa_ Solve cung cấp số tham số đầu vào khác nhau, tham số dùng để thay đổi yêu cầu mong muốn từ facilitator, yêu cầu dịch vụ từ agent khác Đặc biệt, tham số địa có phép xác định rõ lời tới hay nhiều agents Các agent sử dụng oaa_Solve cách cục cách đưa vào tham số đầu vào agent gọi địa 3.3.4 Dữ liệu thành phần Dữ liệu thành phần trả từ câu truy vấn yêu cầu liệu Trong vài trường hợp, liệu thành phần fully instantiated partially instantied 3.3.5 Cơ chế kích hoạt OAA trigger cung cấp chế chung cho agent xác định rõ điều kiện để kiện xảy Mỗi agent cài đặt trigger mơt cách cục (trên nó) từ xa (trên facilitator agent đồng cấp đó) Trigger chia làm loại: Communication, data, task time trigger Triggers liên hệ với solvable theo cách: Cách 1, tất trigger cài đặt data solables, khai báo cho agent Cách 2, task trigger yêu cầu khai báo trigger solvable 3.3.6 Danh sách tham số Rất nhiều thành phần thư viện solvable, events, procedures nhận danh sách tham số đầu vào làm đối số Ví dụ : khai báo solvable data với danh sách tham số sau : [type(data), single_value(true), persistent(true)] Nhiều tham số có giá trị mặc định Khi ta muốn tham số có giá trị mặc định khơng cần thiết phải xác định tồn đối số Một tham số boolean với giá trị true bỏ qua Ví dụ: danh sách tham số viết sau: [type(data), single_value, persistent] Để lấy giá trị tham số từ danh sách tham số, ta gọi hàm icl_GetParamValue Ví dụ, ngơn ngữ Prolog, lấy giá trị tham số sau: icl_GetParamValue(from(Requestor), Params) 3.3.7 Tên địa Agent Mỗi agent có hay nhiều server connection hay nhiều client connection Thường thi facilitator trì kết nối đơn, client agent trì kết nối đơn tới facilitator agent Mọi agent (bao gồm facilitator) có tên đại diện, địa đầy đủ, địa cục với kết nối mở client kết nối mở server Quy cách địa đầy đủ phụ thuộc vào giao thức giao vận ta sử dụng Nếu sử dụng TCP/IP, ta khai báo địa sau: addr(tcp(Host, Port ), địa agent client ghi sau: addr( tcp(Host, Port), LocalID) 3.4 Sự kiện lặp Mọi hành động agent có cấu trúc xoay quanh kiện lặp, kiện khởi tạo agent gọi (thường lời gọi agent tới hàm thư viện agent oaa_MainLoop) Việc gọi kiện lặp để lặp lại trình kiểm tra kiện hàng đợi agent 3.5 Các thành phần lập trình Trong agent có số thành phần lập trình dùng để định nghĩa số quy tắc ứng xử agent tham gia vào OAA, thông tin cần thiết cung cấp từ thư viện agent giúp cho agent thực hành động khác  Declarations of solvables Mỗi agent cung cấp khả, gửi tới facilitator danh sách dịch vụ mà agent cung cấp Facilitator sử dụng thông tin để đáp ứng lại yêu cầu cung cấp dịch vụ Các agent đăng kí dịch vụ cung cấp cách truyền tham số vào oaa_Register Sau đăng kí, agent thay đổi khai báo cách sử dụng oaa_Declare, oaa_Undeclare, oaa_Redeclare  Request handlers Với khả giải theo kiểu gọi hàm, agent phải cung cấp thủ tục callback định nghĩa kiện callback app_do mặc định  oaa_SetTimeout(TimeoutDelay) Với việc gọi thủ tục thư viện này, agent đưa thời gian timeout chờ đợi kiện quay vòng  app_idle callback Cho phép agent định nghĩa thủ tục để agent khác gọi khơng có kiện hàng đợi xảy timeout Nếu muốn viết thủ tụcnhư thế, ta phải điền thêm thông tin vào libarary cách gọi oaa_RegisterCallback oaa_RegisterCallback(app_idle, ProcedureName) 3.6 Truyền tham số cách cài đặt Một số tham số đầu vào sử dụng yêu cầu lời gọi tới facilitator, số tham số sử dụng với agent client Tham số đầu vào truyền đạt cách sau: on the command line in environment variables in a setup file Ví dụ: để báo cho client agent (hoặc facilitator) biết nên kết nối tới parent facilitator host 'mymachine.ai.sri.com' cổng 3345, làm cách sau: Dùng tham số dòng lệnh: fac -oaa_connect "tcp('mymachine.ai.sri.com', 3345)" Thiết lập biến môi trường OAA_CONNECT để chứa xâu sau: tcp('mymachine.ai.sri.com', 3345) Đưa vào file setup dòng sau: oaa_connect( tcp('mymachine.ai.sri.com', 3345)) 3.6.1 File setup Thư viện agent cần phải load đoạn mã chứa setup file thực thi, ta làm sau : Đường dẫn file cho dòng lệnh (hay biến mơi trường) sử dụng -setup_file (or SETUP_FILE) setup.pl nằm thư mục hành agent setup.pl nằm "home directory" người dùng chạy agent (trong UNIX, ~/setup.pl; Windows NT, %HOMEDRIVE%%HOMEPATH %\setup.pl; Windows 95/98, /setup.pl ổ đĩa hành) setup.pl thư mục gốc ("/" UNIX, "C:\" Windows) 3.6.2 Các tham số Invocation Facilitator Facilitator nhận biết tham số đầu vào Trong trường hợp (trừ setup_file), tham số nên đưa vào từ dịng lệnh, biến mơi trường từ setup file 3.6.3 Các tham số Invocation Client Agent Các tham số Invocation Client agent sau: • setup_file Các đoạn mã thư viện kiểm tra điều oaa_ResolveVariables gọi • -oaa_connect Tham số cho agent biết địa mạng dùng để kết nối tới facilitator Các đoạn mã thư viện kiểm tra điều com_Connect gọi • -oaa_listen Tham số cho agent biết để mở socket “chờ”, địa mạng dùng cho socket Các đoạn mã thư viện kiểm tra điều oaa_SetupCommunication gọi Chương trình: Chương trình lấy thơng số ổ đĩa cứng thời gian hệ thống // $Id: AddClient.c,v 1.3 2002/09/25 21:43:00 mjohnson Exp $ #include #include #include #include #include #include "SysInfor.h" #include #include //#include //#include #define IDT_TIMER char AgentName[20]; int updatehost_Callback(ICLTerm* goal,ICLTerm* params,ICLTerm* solutions); int setup_oaa_connection(int argc, char *argv[]); bool UpdateDatabase(); VOID CALLBACK MyTimerProc( HWND hwnd, // handle of window for timer messages UINT message, // WM_TIMER message UINT idTimer, // timer identifier DWORD dwTime); // current system time int main(int argc, char *argv[]) { UINT nTime=60000; if(argc!=1) { if(argc!=2) { printf("Usage : ExecAgent nTime(s)\n"); return EXIT_FAILURE; } nTime=atoi(argv[1])*1000; } UINT uResult; uResult=SetTimer(NULL, // handle of main window IDT_TIMER, // timer identifier nTime, // 60-second interval (TIMERPROC) MyTimerProc); // timer callback if (uResult == 0) { printf("No timer is available."); } else printf("\nTimer ready.\n"); //*********************************** strcpy(AgentName,"ExecAgent"); // Initialize the OAA library oaa_Init(argc, argv); // Setup the connection of this agent to the Facilitator // See setup_oaa_connection() definition below if (!setup_oaa_connection(argc, argv)) { printf("Could not setup OAA connections exiting.\n"); return EXIT_FAILURE; } //********************************** UpdateDatabase(); //********************************** //oaa_MainLoop(TRUE); MSG msg; BOOL bRet; while( (bRet = GetMessage( &msg, NULL, 0, )) != 0) { if (bRet == -1) 1 { // handle the error and possibly exit printf("Timer error !"); return 1; } else { if(msg.message==WM_TIMER) { TranslateMessage(&msg); DispatchMessage(&msg); } } } // Disconnect and exit oaa_Disconnect(NULL, NULL); return EXIT_SUCCESS; } /** * Setups up the the connection between this agent * and the facilitator * @param argc passed in but not used in this implementation * @param argv passed in but not used in this implementation * @return TRUE if successful */ int setup_oaa_connection(int argc, char *argv[]) { ICLTerm* mySolvablesAsTerm = icl_NewList(NULL); icl_AddToList(mySolvablesAsTerm, icl_NewTermFromString("solvable(updatehost(Result), [callback(updatehost)])"), TRUE); // Use this OAA convenience function to setup communications if (!oaa_SetupCommunication(AgentName)) { printf("Could not connect\n"); return FALSE; } // Register solvables with the Facilitator // This is a "pure client" agent and therefore // it has no solvables // The string "parent" represents the Facilitator //mySolvablesAsTerm = icl_NewList(NULL); if (!oaa_Register("parent", AgentName, mySolvablesAsTerm)) { printf("Could not register\n"); return FALSE; } //Register callback function if (!oaa_RegisterCallback("updatehost",updatehost_Callback)) { printf("Could not register addhost callback\n"); return FALSE; } // Clean up icl_Free(mySolvablesAsTerm); // Declare agent "ready" oaa_Ready(TRUE); return TRUE; } VOID CALLBACK MyTimerProc( HWND hwnd, // handle of window for timer messages UINT message, // WM_TIMER message UINT idTimer, // timer identifier DWORD dwTime) // current system time { UpdateDatabase(); } bool UpdateDatabase() { ICLTerm *El1 = NULL; ICLTerm *El2 = NULL; ICLTerm *El3 = NULL; ICLTerm *El4 = NULL; ICLTerm *goal = NULL; ICLTerm *in_params = NULL; ICLTerm *out_params = NULL; ICLTerm *solutions = NULL; int solve_success = 0; char *s1=new char[255],*s3=new char[255]; char *s2=new char[255]; //Host //GetHostInfor(&s1,&s2,&s3); //unsigned long nSize; //GetComputerName(s1,&nSize); printf("\n************************************************\ n Updating database \n"); gethostname(s1,255); GetSystemVersion(&s2); strcpy(s3,"No description"); El1=icl_NewStr(s1); El2=icl_NewStr(s2); El3=icl_NewStr(s3); goal = icl_NewStruct("addhost", 3, El1, El2, El3); in_params = icl_NewList(NULL); solve_success = oaa_Solve(goal, in_params, &out_params, &solutions); if (solve_success) { printf("\nUpdate host information successful"); } else { printf("\nThere was an OAA failure; no solution found for addhost."); } icl_Free(goal); icl_Free(in_params); icl_Free(out_params); icl_Free(solutions); //CPU char *s4=new char[255]; GetCPUInfor(&s3,&s4); strcpy(s2,"CPU"); El1=icl_NewStr(s1); El3=icl_NewStr(s3); El4=icl_NewStr(s4); El2=icl_NewStr(s2); goal = icl_NewStruct("addobject", 4, El1, El2, El3,El4); in_params = icl_NewList(NULL); solve_success = oaa_Solve(goal, in_params, &out_params, &solutions); if (solve_success) { printf("\nUpdate CPU information successful"); } else { printf("\nThere was an OAA failure; no solution found for addobject."); } icl_Free(goal); icl_Free(in_params); icl_Free(out_params); icl_Free(solutions); //System memory GetSysMemInfor(&s3,&s4); strcpy(s2,"System Memory"); El1=icl_NewStr(s1); El3=icl_NewStr(s3); El4=icl_NewStr(s4); El2=icl_NewStr(s2); goal = icl_NewStruct("addobject", 4, El1, El2, El3,El4); in_params = icl_NewList(NULL); solve_success = oaa_Solve(goal, in_params, &out_params, &solutions); if (solve_success) { printf("\nUpdate system memory information successful"); } else { printf("\nThere was an OAA failure; no solution found for addobject."); } icl_Free(goal); icl_Free(in_params); icl_Free(out_params); icl_Free(solutions); //Network adapters PIP_ADAPTER_INFO pAdapterInfo; // buffer to receive data pAdapterInfo=new IP_ADAPTER_INFO[10]; ULONG pOutBufLen =sizeof(IP_ADAPTER_INFO)*10; int nResult=GetAdaptersInfo(pAdapterInfo,&pOutBufLen); if(nResult==ERROR_SUCCESS) { PIP_ADAPTER_INFO p=pAdapterInfo; //IP_ADDR_STRING IpAddr; char st3[255],st2[255],st4[255]; while( p!=NULL) { if(!p) break; strcpy(st2,"unknown"); if(p->AdapterName) strcpy(st2,p->AdapterName); else strcpy(st2,"unknown"); if((p->CurrentIpAddress)&&(p->CurrentIpAddress>IpAddress).String) strcpy(st3,(p->CurrentIpAddress->IpAddress).String); else strcpy(st3,"unknown"); if(p->Description) strcpy(st4,p->Description); else strcpy(st4,"unknown"); sprintf(s2,"Network Adapter %u",p->Index); sprintf(s3,"\tNetwork adapter information:\tAdapter name : %s\tIP Address :%s", st2,st3); if((p->DhcpEnabled)) sprintf(st3,"\tDHCP server :%s",(p>DhcpServer.IpAddress).String); else sprintf(st3,"\tDHCP server : unknown"); strcat(s3,st3); //memcpy(st3,p->Address,p->AddressLength); //st3[p->AddressLength+1]='\0'; //printf(st3); sprintf(s4,"\tDescription :%s",st4); //printf(s3); El1=icl_NewStr(s1); El3=icl_NewStr(s3); El4=icl_NewStr(s4); El2=icl_NewStr(s2); goal = icl_NewStruct("addobject", 4, El1, El2, El3,El4); in_params = icl_NewList(NULL); solve_success = oaa_Solve(goal, in_params, &out_params, &solutions); if (solve_success) { printf("\nUpdate %s information successful",s2); } else { printf("\nThere was an OAA failure; no solution found for addobject."); } icl_Free(goal); icl_Free(in_params); icl_Free(out_params); icl_Free(solutions); p=p->Next; } } else { switch(nResult) { case ERROR_BUFFER_OVERFLOW: printf("\nOverflow"); break; case ERROR_INVALID_PARAMETER: break; case ERROR_NO_DATA: break; case ERROR_NOT_SUPPORTED: break; default: break; } } //System time GetSysTimeInfor(&s3,&s4); strcpy(s2,"System Local Time"); El1=icl_NewStr(s1); El3=icl_NewStr(s3); El4=icl_NewStr(s4); El2=icl_NewStr(s2); goal = icl_NewStruct("addobject", 4, El1, El2, El3,El4); in_params = icl_NewList(NULL); solve_success = oaa_Solve(goal, in_params, &out_params, &solutions); if (solve_success) { printf("\nUpdate system time information successful"); } else { printf("\nThere was an OAA failure; no solution found for addobject."); } icl_Free(goal); icl_Free(in_params); icl_Free(out_params); icl_Free(solutions); //Keyboard GetKeyboardInfor(&s3,&s4); strcpy(s2,"Keyboard"); El1=icl_NewStr(s1); El3=icl_NewStr(s3); El4=icl_NewStr(s4); El2=icl_NewStr(s2); goal = icl_NewStruct("addobject", 4, El1, El2, El3,El4); in_params = icl_NewList(NULL); solve_success = oaa_Solve(goal, in_params, &out_params, &solutions); if (solve_success) { printf("\nUpdate keyboard information successful"); } else { printf("\nThere was an OAA failure; no solution found for addobject."); } icl_Free(goal); icl_Free(in_params); icl_Free(out_params); icl_Free(solutions); //Mouse GetMouseInfor(&s3,&s4); strcpy(s2,"Mouse"); El1=icl_NewStr(s1); El3=icl_NewStr(s3); El4=icl_NewStr(s4); El2=icl_NewStr(s2); goal = icl_NewStruct("addobject", 4, El1, El2, El3,El4); in_params = icl_NewList(NULL); solve_success = oaa_Solve(goal, in_params, &out_params, &solutions); if (solve_success) { printf("\nUpdate mouse information successful"); } else { printf("\nThere was an OAA failure; no solution found for addobject."); } icl_Free(goal); icl_Free(in_params); icl_Free(out_params); icl_Free(solutions); //Power GetSysPowerInfor(&s3,&s4); strcpy(s2,"System Power"); El1=icl_NewStr(s1); El3=icl_NewStr(s3); El4=icl_NewStr(s4); El2=icl_NewStr(s2); goal = icl_NewStruct("addobject", 4, El1, El2, El3,El4); in_params = icl_NewList(NULL); solve_success = oaa_Solve(goal, in_params, &out_params, &solutions); if (solve_success) { printf("\nUpdate system power information successful"); } else { printf("\nThere was an OAA failure; no solution found for addobject."); } icl_Free(goal); icl_Free(in_params); icl_Free(out_params); icl_Free(solutions); //Logical Drivers char *str=new char[255]; GetLogicalDriveStrings(strlen(str),str); //Process string //int i; char str1[4]; while(1) { if(str[0]=='\0') break; strcpy(str1,str); str=str+4; GetLogicalDriversInfor(str1,&s3,&s4); // //printf("\n%s\n%s",s3,s4); // sprintf(s2,"Logical Drive %c",str1[0]); El1=icl_NewStr(s1); El3=icl_NewStr(s3); El4=icl_NewStr(s4); El2=icl_NewStr(s2); goal = icl_NewStruct("addobject", 4, El1, El2, El3,El4); in_params = icl_NewList(NULL); solve_success = oaa_Solve(goal, in_params, &out_params, &solutions); if (solve_success) { printf("\nUpdate logical driver %c information successful",str1[0]); } else { printf("\nThere was an OAA failure; no solution found for addobject."); } icl_Free(goal); icl_Free(in_params); icl_Free(out_params); icl_Free(solutions); } //Process Information DWORD aProcesses[1024], cbNeeded, cProcesses; unsigned int i; if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )

Ngày đăng: 26/12/2023, 16:36

w