簡體   English   中英

如何使用回調示例vc實現icmpsendecho2異步

[英]how to implement icmpsendecho2 asynchronous with callback example vc

我需要使用ApcRoutine回調例程異步使用IcmpSendEcho2 API命令。

我有一個問題是,我需要定義的ApcRoutine回調例程的簽名是什么樣的?

當我調用IcmpSendEcho2時,第三個參數是什么樣的?

我有15個代理請求要發送。 我應該只向IcmpSendEcho2請求一次還是多次。

如果我需要一次發送許多IcmpSendEcho2請求。 回調ApcRoutine如何知道哪個IcmpSendEcho2調用已完成。 我猜這就是ApcContext參數起作用的地方嗎?

我在MSDN或其他地方找不到任何示例代碼來演示如何異步使用IcmpSendEcho2命令。

int ReplyCame(PVOID param)
{
 char* szAddr = (char*) param;

 printf("Replay Came for %s......\n", szAddr);

 return 0;
}

char* szAddr1 = "172.18.1.1";
char* szAddr2 = "172.18.1.4";

int _tmain(int argc, _TCHAR* argv[])
{
 char *SendData = "Data Buffer";
 LPVOID ReplyBuffer;

 HANDLE IcmpHandle = IcmpCreateFile();

 IPAddr addr1 = inet_addr(szAddr1);
 IPAddr addr2 = inet_addr(szAddr2);

 ReplyBuffer = (VOID*) malloc(sizeof(ICMP_ECHO_REPLY) + sizeof(SendData));

 IcmpSendEcho2(IcmpHandle, NULL, (FARPROC)ReplyCame, szAddr1, addr1, 
SendData, sizeof(SendData), NULL, ReplyBuffer, 8*sizeof(ReplyBuffer) + 
sizeof(ICMP_ECHO_REPLY), 1000);
 IcmpSendEcho2(IcmpHandle, NULL, (FARPROC)ReplyCame, szAddr2, addr2, 
SendData, sizeof(SendData), NULL, ReplyBuffer, 8*sizeof(ReplyBuffer) + 
sizeof(ICMP_ECHO_REPLY), 1000);

 SleepEx(5000, TRUE);

 return 0;
}

請注意,如果要使用ReplyBuffer,則需要在使用IcmpParseReplies之前對其進行解析。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM