BÀI TẬP LỚN MễN HỌC CHUYÊN ĐỀ CÔNG NGHỆ AGENT

22 631 1
BÀI TẬP LỚN MễN HỌC CHUYÊN ĐỀ CÔNG NGHỆ AGENT

Đ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

OAA là một multi-agent framework tập trung vào việc hộ trợ việc tương tác mềm dẻo trong cộng đồng động, đa dạng các agent phần mềm. í tưởng chủ yếu của OAA là delegation: thay cho việc mỗi agent phải mó hoỏ cứng cỏc hành vi của nú, lý giải nú sẽ tương tác với agent nào và như thế nào, agent trong OAA biểu diễn sự tương tác dưới dạng những điều nó cần cho một agent đặc biệt khác (facilitator agent). Agent này sẽ phối hợp sự hoạt động của cộng đồng agent để hoàn thành công việc, cung cấp các dịch vụ như xử lý song song failure handling và phỏt hiện xung đột và các client agent không phải quan tâm tới các vần đề đó nữa.

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 1. Tổng quan OAA là một multi-agent framework tập trung vào việc hộ trợ việc tương tác mềm dẻo trong cộng đồng động, đa dạng các agent phần mềm. í tưởng chủ yếu của OAA là delegation: thay cho việc mỗi agent phải mó hoỏ cứng cỏc hành vi của nú, lý giải nú sẽ tương tác với agent nào và như thế nào, agent trong 1 OAA biểu diễn sự tương tác dưới dạng những điều nó cần cho một agent đặc biệt khác (facilitator agent). Agent này sẽ phối hợp sự hoạt động của cộng đồng agent để hoàn thành công việc, cung cấp các dịch vụ như xử lý song song failure handling và phỏt hiện xung đột và các client agent không phải quan tâm tới các vần đề đó nữa. 2. Mục đích của việc thiết kế mụ hỡnh OAA Ngày nay, kỹ thuật lập trỡnh dựa trờn agent (agent-based programming) đó được nhắc đến nhiều trong các thuật ngữ kĩ thuật. Trong môi trường OAA, các agent hoạt động một cách độc lập và phối hợp với nhau trong một hệ thống mạng phân tán bởi vỡ chúng được lập trỡnh trờn cỏc ngụn ngữ bậc cao, do đó chúng có khả năng hoạt động và tính toán một cách độc lập. Mục tiêu và các khái niệm về OAA đó được nói đến một cách chi tiết, nên dưới đây, ta sẽ chỉ đề cập một cách ngắn gọn về các khái niệm này: 2.1. Khả năng phối hợp cùng hoạt động OAA tập trung vào ý tưởng rằng một cộng đồng agent cùng tham gia vào giải quyết một công việc chung. Mặc dù có thể thiết kế chỉ một agent để giải quyết tất cả mọi công việc nhưng sẽ chuyên nghiệp hơn nếu như ta thiết kế những agent “chuyờn gia” (expert agent) và mỗi agent đảm nhận một cụng việc khỏc nhau. Trong môi trường OAA, phần lớn các yêu cầu của user đều được giải quyết với nhiều agent. Do đó, việc phối hợp hoạt động giữa các agent phải thật tốt, để đảm bảo không có agent nào phải hoạt động quá tải. 2.2. Sự hoạt động phân tán Cộng đồng cỏc agent rất đa dạng, cho phép cỏc agent có thể chạy trên mọi môi trường khác nhau, được viết bởi các ngôn ngữ khác nhau. Môi trường OAA sẽ cung cấp một số quy tắc chuẩn để agent có thể hoạt động và liên kết được với nhau. Sự hoạt động phân tán mở khả ra khả năng tính toán song song khi nhiều agent cùng thực thi các phần khác nhau của một công việc nào đó. 2.3. Sự thớch nghi Khi cú cỏc thành viờn mới tham gia vào cộng đồng agent, thỡ hoạt động tương tỏc giữa cỏc agent nhỡn chung cú sự thay đổi. Nếu một agent nào đó tham gia vào hoạt động cộng tỏc, thỡ sự tương tác giữa các agent phải đủ linh hoạt, mềm dẻo để cho phép agent mới này tham gia hoạt động. Kiến trúc “plug & play” cho phép xây dựng một hệ thống với các agent đó tồn tại từ trước và có thể dễ dàng phát triển các tính năng mới cho các agent cũ hoặc xây dựng các agent mới. 2 2.4. Truyền thụng giữa cỏc agent Bởi vỡ con người luôn muốn tham gia vào hệ thống một cách linh hoạt nên cần phải có một ngôn ngữ đủ mạnh, đủ linh hoạt để có thể diễn tả được ngôn ngữ tự nhiên. Nếu ngôn ngữ ICL (Interagent Communication Language) có thể diễn đạt được một cách đầy đủ ngôn ngữ tự nhiên thỡ ta hoàn toàn cú thể xõy dựng được các câu lệnh, các thủ tục và tương tác. 2.5. Hoạt động và tái hoạt động tớnh toỏn Agent không chỉ là những nguồn dữ liệu thụ động thực hiện cỏc hành động và trả lời thông tin theo yêu cầu. Cỏc agent có thể giám sát hoạt động của môi trường xung quanh nó và quyết định khi nào thực hiện hành động, thực hiện hành động nào, cảnh báo cho người dùng về các tỡnh huống thớch hợp. Hơn thế nữa, các agent có thể theo dừi sự tương tác giữa các agent khác và đưa ra giải pháp để hệ thống hoạt động tốt hơn. 2.6. Client Agents Mỗi agent trong OAA hoặc là facilitator agent hoặc là client agent. Client Agent được gọi là Client vỡ xột trờn một khớa cạnh nào đó nú là client của một facilitator nào đú, cỏc facilitator này cung cấp sự đối thoại và cỏc dịch vụ cần thiết cho cỏc client. Khi cần, một client agent thực hiện kết nối tới facilitator – parent facilitator. Với kết nối này, agent khai báo cho parent agent của nó biết các dịch vụ mà nó có thể cung cấp. Khi một dịch vụ của agent được 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 hiện nếu cú thể và trả kết quả, bỏo cỏo . về cho facilitator. Trong quỏ trỡnh yờu cầu, agent cú thể sử dụng một số chức năng được OAA cung cấp. 2.7. Facilitator Agents Facilitator là một server agent chuyờn dụng, chịu trách nhiệm liên kết hoạt động, đối thoại giữa các agent đồng thời giải quyết các vấn đề vướng mắc nảy sinh. Trong nhiều hệ thống, facilitator được dùng để cung cấp các dữ liệu toàn cục cho các client agents, nó cho phép các agent client có thể chấp nhận tương tác qua cơ chế blackboard. Facilitator cũn duy trỡ mối quan hệ giữa cỏc agent, thụng bỏo khả năng của các agent trong hệ thống, sử dụng các thông tin này để trợ giúp cho quá trỡnh yờu cầu và cung cấp cỏc dịch vụ trong hệ thống. Chức năng trung tâm của facilitator là khả năng delegation một cỏch trong suốt. Cú nghĩa là một agent yờu cầu cú thể tạo ra cỏc yờu cầu, facilitator cú thể hiệu 3 chỉnh yờu cầu mà khụng cần agent yờu cầu phải biết bất kỡ thụng tin gỡ về tớnh đồng nhất hay vị trớ chớnh xỏc của agent cung cấp. Delegation một cỏch trong suốt hoà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ững dị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 chung. 2.8. Truyền thụng giữa cỏc agent Ngụn ngữa ICL (Interagent Communication Language) của OAA chớnh là ngụn ngữ giao tiếp và truyền thụng giữa cỏc agents mà không cần biết các agent đó đang chạy trên máy nào, được viết trên ngôn ngữ nào. ICL được thiết kế trên nền mở rộng của ngôn ngữ Prolog, kế thừa những ưu điểm, sự hợp lí và thống nhất của Prolog. Trong ICL có một số từ khoá, một số thành phần đặc biệt sử dụng câu lệnh ICL, bao gồm khả năng khai báo biến, sự kiện, yêu cầu dịch vụ, đáp ứng yờu cầu, chia sẻ cỏc thành phần dữ liệu. 2.9. Sự quản lớ quyền thực thi Hiện nay, do sự khác nhau về cơ chế của các ngôn ngữ, của cỏc platform nên việc cài đặt, thực thi hoạt động bằng agent là rất thích hợp. Điều này sẽ giải quyết được rất nhiều rắc rối gặp phải khi khởi động một hệ thống và duy trỡ cho hệ thống hoạt động thông suốt. Hệ thống OAA có một trỡnh quản lý việc thực hiện của cỏc agent (Execution Manager) để quản lí các hoạt động thực thi gọi là Start-It. Khi một tập cỏc agent được liên kết hoạt động để cựng thực hiện một số nhiệm vụ nào đú, Start-It cung cấp khả năng cài đặt mỗi agent trờn một platform thớch hợp với agent đó. Theo các giao thức hoạt động của platform này, chỉ cần agent cú yờu cầu kết nối tới facilitator thỡ chắc chắn agent đó sẽ hoạt động được. Một chức năng quan trọng khác của Start-It là giỏm sỏt trạng thỏi của mỗi agent xem chỳng hoạt động cú chớnh xỏc khụng? Nếu Start-It phỏt hiện thấy một agent nào đó hoạt động không đúng, nó sẽ thực hiện một số bước nào đó để phục hồi lỗi và tự khởi động lại agent đó. 3. Cơ sở hạ tầng của Agent Trong phần này, chúng ta sẽ xem xét và giải thích từng thành phần của OAA một cách chi tiết, để giúp những người phát triển OAA có được cái nhỡn căn bản nhất về sự hoạt động của cỏc thành phần trong OAA. 3.1. Thư viện Agent Thư viện agent cung cấp những hàm chức năng căn bản nhất cho mọi agent trong OAA, bao gồm cả agent facilitator. Thư viện này đó được chuyển sang nhiều 4 ngôn ngữ khác nhau và một phần của thư viện này chính là cơ chế cài đặt của mỗi agent. Lập trỡnh viờn cần phải gọi cỏc hàm được cung cấp trong thư viện, khai báo các biến, định nghĩa là các hàm callback đó cú sẵn trong thư viện. Trong phần này, ta mô tả qua một vài thành phần cơ bản của thư viện agent và một số cách sử dụng thư viện chung cho mọi agent. 3.2. Giao thức giao vận Agent Hiện nay, mọi hệ thống dựa trờn mụ hỡnh OAA đều sử dụng TCP/IP như là một giao thức vận chuyển. TCP được cài trên nhiều hệ điều hành khác nhau như Unix, Macintosh, Dos, MS Windows nên việc sử dụng TCP/IP là rất linh hoạt, thuận tiện cho việc tương tác giữa cỏc agent chạy trờn cỏc nền khỏc nhau. Tuy nhiên, OAA được thiết kế sao cho nó có thể cho phép sử dụng nhiều giao thức giao vận khác nữa. Điều này được cài đặt trong API với một lớp giao vận. Lớp giao vận là một lớp riêng, được tải riêng rẽ từ phần cũn lại của một số thủ tục của thư viện. Những thủ tục trong lớp giao vận có tên với tiền tố com_. Mọi việc truyền thụng giữa cỏc agent thụng qua cỏc thủ tục API này. 3.3. Ngụn ngữ ICL Như đó núi ở trờn, trong phần truyền thụng giữa cỏc agent, cỏc biểu thức ICL được sử dụng để khai báo cỏc solvable, sự kiện, yờu cầu sử dụng dịch vụ, đáp ứng dịch vụ, chia sẻ dữ liệu thành phần. Một số framework agent được điều khiển bằng lời nói như là FIPA hay KQML, thỡ ICL cũn cú cả một lớp giao thức đối thoại. Lớp đối thoại của ICL được định nghĩa bởi các kiểu sự kiện, kết hợp với danh sách các tham số để tổ chức thành kiểu các sự kiện. Nội dung của lớp này bao gồm cả kết quả trả về, cơ chế kích hoạt, dữ liệu thành phần cú thể được nhỳng vào cỏc sự kiện khỏc nhau. Ta hoàn toàn có thể nhúng thêm nội dung hàm thành phần viết bằng một ngôn ngữ khác vào các sự kiện của ICL, đây là một ưu điêm rất lớn của ICL. Với cơ chế này, không chỉ cung cấp cho facilitator thêm nhiều thông tin về bản chất của các yêu cầu từ các agent khác mà cũn giỳp facilitator phõn loại cỏc yờu cầu 3.3.1. Khai bỏo cỏc solvable trong agent Mỗi agent tham gia vào hệ thống OAA phải khai báo, đưa ra các khả năng của nó, các dịch vụ nó có thể cung cấp thông qua ngôn ngữ ICL. Điều đó thiết lập một giao diện ở mức cao giữa cỏc agent, giao diện này được facilitator sử dụng trong việc liờn kết, truyền thụng giữa các agent để đáp ứng các yêu cầu của các agent khác. Một yếu tố quan trọng trong khả năng của agent chính là kiểu (type) cung cấp, có thể là khả năng cung cấp thủ tục (procedure solvable), dữ liệu (data solvable) hoặc cơ chế kích hoạt (trigger). Khả năng cung cấp thủ tục và dữ liệu có 5 thể được các agent khác sử dụng một cỏch trực tiếp (thường thỡ cỏc agent đó sử dụng khả năng này bằng cách gọi thủ tục oaa_Solve trong thư viện). Ở mức khỏi niệm, một solvable cung cấp thủ tục (procedure) thực hiện một hành động nào đó, cũn solvable cung cấp dữ liệu (data) lưu giữ một tập các công việc. Ví dụ: Ta tạo một agent cho hệ thống mail, thỡ solvable cung cấp thủ tục là việc gửi message tới người sử dụng, liệt kờ cỏc thụng điệp đó được gửi đến theo một chủ đề nào đú hay hiển thị một thụng điệp nào đú lờn màn hỡnh, cũn solvable cung cấp dữ liệu tương ứng với mỗi quan hệ đó với cơ sở dữ liệu hiện tại. Thường thỡ solvable cung cấp dữ liệu được sử dụng để cung cấp kho dữ liệu dùng chung. Solvable kớch hoạt (trigger) khụng thể truy nhập trực tiếp từ cỏc agent khỏc, chỳng được sử dụng gián tiếp thông qua việc thiết lập bộ kích hoạt công việc (task trigger) của chúng. Khả năng này là để phục vụ cho các sự kiện xảy ra dưới một điều kiện đặc biệt. Ví dụ: một email agent có thể khai báo một khả năng kích hoạt nhằm kiểm tra các thư đến. Chỳ ý rằng cú rất nhiều kiểu kớch hoạt, task trigger chỉ là một kiểu trong đó. Một agent khai báo các khả năng của chúng bằng cách sử dụng oaa_Declare và oaa_Undeclare trong thư viện 3.3.2. Sự kiện Việc truyền thụng giữa các agent diễn ra dưới dạng các sự kiện, ngay cả hoạt động và cấu trúc của mỗi agent cũng được tổ chức thành kiểu các sự kiện. Trong việc đối thoại giữa các agent, điều đó có thể giúp ích cho việc nhỡn nhận cỏc sự kiện này như là những thông điệp. Phần lớn các sự kiện cần thiết cơ bản đều đó cú trong thư viện nên không cần các lập trỡnh viờn viết lại, ta cú thể xem trong oaa_Solve và oaa_AddTrigger. Vớ dụ: lời gọi oaa_Solve(Goal, Params) trong một agent A nào đú, kết quả trả về cú dạng ev_solve(GoalId, Goal, Params) đi từ A tới facilitator và trả về thông điệp có dạng ev_solved(GoalId, Requestees, Solvers, Goal, Params, Solutions). Do cỏc sự kiện này đó được tự động xử lí thông suốt, nên các lập trỡnh viờn khụng cần quan tấm đến chúng một cách chi tiết nữa. 3.3.3. Yờu cầu dịch vụ Một agent yêu cầu dịch vụ bằng cách gửi mục tiêu cần đạt được của nó tới facilitator. Mỗi yêu cầu có thể có một hay nhiều khả năng giải quyết. Thư viện OAA cung cấp cho mỗi agent một cơ chế truy nhập đơn thống nhất để có thể yêu cầu dịch vụ từ các agent khác, xem trong oaa_Solve. 6 oaa_ Solve cung cấp một số các tham số đầu vào khác nhau, các tham số này có thể được dùng để thay đổi yêu cầu mong muốn từ facilitator, hoặc là yêu cầu dịch vụ từ agent khác. Đặc biệt, tham số địa chỉ có phép xác định rừ lời tới một hay nhiều agents. Cỏc agent cú thể sử dụng oaa_Solve một cỏch cục bộ bằng cỏch đưa vào tham số đầu vào của agent gọi chính địa chỉ của nó. 3.3.4. Dữ liệu thành phần Dữ liệu thành phần được trả về từ những câu truy vấn yêu cầu dữ liệu. Trong một vài trường hợp, những dữ liệu thành phần này có thể được fully instantiated hoặc là partially instantied. 3.3.5. Cơ chế kớch hoạt OAA trigger cung cấp một cơ chế chung cho các agent có thể xác định rừ cỏc điều kiện để một sự kiện có thể xảy ra. Mỗi agent có thể cài đặt trigger môt cách cục bộ (trên chính nó) hoặc là từ xa (trên facilitator hoặc một agent đồng cấp nào đó). Trigger được chia làm 4 loại: Communication, data, task và time trigger. Triggers liờn hệ với solvable theo 2 cách: Cách 1, tất cả các trigger đều được cài đặt như là data solables, khai báo cho mọi agent. Cách 2, task trigger yêu cầu khai báo một trigger solvable. 3.3.6. Danh sỏch tham số Rất nhiều thành phần của thư viện như là solvable, events, procedures nhận danh sách tham số đầu vào làm đối số. Ví dụ : khai báo một solvable data với danh sách tham số như sau : [type(data), single_value(true), persistent(true)] Nhiều tham số có giá trị mặc định. Khi ta muốn một tham số có giá trị mặc định thỡ khụng cần thiết phải xỏc định toàn bộ đối số. Một tham số boolean với giá trị true có thể bỏ qua được. Ví dụ: danh sách tham số dưới đây có thể viết như sau: [type(data), single_value, persistent] Để lấy giỏ trị của một tham số từ danh sỏch cỏc tham số, ta gọi hàm icl_GetParamValue. Ví dụ, trong ngôn ngữ Prolog, có thể lấy giá trị của tham số như sau: icl_GetParamValue(from(Requestor), Params) 3.3.7. Tên và địa chỉ của Agent 7 Mỗi agent có thể có một hay nhiều server connection và một hay nhiều client connection. Thường thi facilitator duy trỡ một kết nối đơn, và mỗi client agent duy trỡ một kết nối đơn tới facilitator của agent nú. Mọi agent (bao gồm cả facilitator) đều có tên đại diện, địa chỉ đầy đủ, địa chỉ cục bộ với mỗi kết nối mở client và mỗi kết nối mở server. Quy cách về địa chỉ đầy đủ phụ thuộc vào giao thức giao vận ta sử dụng. Nếu sử dụng TCP/IP, ta sẽ khai báo địa chỉ như sau: addr(tcp(Host, Port ), cũn địa chỉ của agent client sẽ ghi như sau: addr( tcp(Host, Port), LocalID). 3.4. Sự kiện lặp Mọi hành động của cỏc agent đều có cấu trúc xoay quanh một sự kiện lặp, sự kiện này được khởi tạo khi một agent được gọi (thường thỡ đó là lời gọi của một agent tới các hàm thư viện agent oaa_MainLoop). Việc gọi sự kiện lặp là để lặp lại quá trỡnh kiểm tra cỏc sự kiện trong hàng đợi của agent. 3.5. Cỏc thành phần lập trỡnh cơ bản Trong mỗi agent cú một số thành phần lập trỡnh cơ bản dùng để định nghĩa một số quy tắc ứng xử của agent khi tham gia vào OAA, những thông tin cần thiết được cung cấp từ thư viện agent sẽ giúp cho agent thực hiện các hành động khác nhau. • Declarations of solvables. Mỗi agent cung cấp khả, gửi tới facilitator một danh sách các dịch vụ mà agent đó cung cấp. Facilitator sử dụng thông tin này để đáp ứng lại các yêu cầu cung cấp dịch vụ. Các agent đăng kí dịch vụ mỡnh cung cấp bằng cỏch truyền tham số vào oaa_Register. Sau khi đăng kí, agent có thể thay đổi khai báo bằng cách sử dụng oaa_Declare, oaa_Undeclare, và oaa_Redeclare. • Request handlers. Với mỗi khả năng giải quyết của theo kiểu gọi hàm, agent phải cung cấp một thủ tục callback hoặc định nghĩa một sự 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 có thể đưa ra thời gian timeout khi chờ đợi sự kiện quay vũng. • app_idle callback. Cho phộp một agent định nghĩa ra một thủ tục để agent khác gọi khi không có sự kiện này trong hàng đợi và xảy ra timeout. Nếu muốn viết một thủ tụcnhư thế, ta phải điền thêm thông tin vào libarary bằng cách gọi oaa_RegisterCallback oaa_RegisterCallback(app_idle, ProcedureName) 8 3.6. Truyền tham số và cỏch cài đặt Một số các tham số đầu vào cú thể được sử dụng khi yờu cầu lời gọi tới facilitator, một số tham số đó được sử dụng với cỏc agent client. Tham số đầu vào cú thể được truyền đạt bằng một trong 3 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 rằng nú nờn kết nối tới parent facilitator trờn host 'mymachine.ai.sri.com' và cổng 3345, cú thể làm một trong những cỏch sau: 1. Dựng cỏc tham số dũng lệnh: fac -oaa_connect "tcp('mymachine.ai.sri.com', 3345)" . 2. Thiết lập biến mụi trường OAA_CONNECT để chứa xõu sau: tcp('mymachine.ai.sri.com', 3345) 3. Đưa vào trong 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 một đoạn mó chứa trong setup file khi nú thực thi, ta làm như sau : 1. Đường dẫn file được cho trờn dũng lệnh (hay trong một biến mụi trường) thỡ sử dụng -setup_file (or SETUP_FILE) 2. setup.pl nằm trong thư mục hiện hành của agent. 3. setup.pl nằm trong "home directory" của người dựng chạy agent (trong UNIX, ~/setup.pl; trong Windows NT, %HOMEDRIVE%%HOMEPATH %\setup.pl; trong Windows 95/98, /setup.pl của ổ đĩa hiện hành). 4. setup.pl trong thư mục gốc ("/" trong UNIX, "C:\" trong Windows). 3.6.2. Cỏc tham số Invocation của Facilitator Facilitator có thể nhận biết các tham số đầu vào. Trong mỗi trường hợp (trừ setup_file), tham số nên được đưa vào từ dũng lệnh, trong biến mụi trường hoặc từ setup file. 3.6.3. Cỏc tham số Invocation của Client Agent 9 Cỏc tham số Invocation của cỏc Client agent như sau: • setup_file <đường dẫn file> Cỏc đoạn mó thư viện kiểm tra điều này bất cứ khi nào oaa_ResolveVariables được gọi. • -oaa_connect <địa chỉ> Tham số này chỉ cho agent biết địa chỉ mạng dựng để kết nối tới một facilitator. Cỏc đoạn mó của thư viện sẽ kiểm tra điều này bất cứ khi nào com_Connect được gọi. • -oaa_listen <địa chỉ> Tham số này chỉ cho cỏc agent biết để mở một socket “chờ”, và địa chỉ mạng dựng cho socket này. Cỏc đoạn mó của thư viện sẽ kiểm tra điều này bất cứ khi nào oaa_SetupCommunication được gọi. Chương trỡnh: Chương trỡnh lấy thụng số của ổ đĩa cứng và thời gian hệ thống // $Id: AddClient.c,v 1.3 2002/09/25 21:43:00 mjohnson Exp $ #include <windows.h> #include <stdio.h> #include <string.h> #include <libicl.h> #include <liboaa.h> #include "SysInfor.h" #include <psapi.h> #include <iphlpapi.h> //#include <winnt.h> //#include <winsock2.h> #define IDT_TIMER 1 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) { 10

Ngày đăng: 25/07/2013, 16:32

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan