各位高手,如何用MFC实现ping的命令啊?

sal 2005-08-07 10:39:48
我是新手,正在做一个ping的程序,就是输入要ping的ip地址,点确定,即可返回ping的结果这种程序,但是我不知道用MFC的方法生成icmp原始套接字啊,特请教各位朋友。谢谢!
...全文
1140 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
sal 2005-10-20
  • 打赏
  • 举报
回复
偶有几天没来了,没想到讨论这么激烈,偶用的VC.net,没感觉MFC和raw socket有什么冲突啊。偶是新手啊,没使用命令行,而是创建了普通的一个对话框程序,输入ip地址,点击开始,然后在edit control里显示ping的结果,基本的功能已经实现了,但感觉ping的结果time值要么是0ms,要么是10的倍数,而ttl值和windows里自带的ping的结果对不上。
fisker0303 2005-10-19
  • 打赏
  • 举报
回复
但MFC不是基于命令行的,有些地方要改一改。
fisker0303 2005-10-19
  • 打赏
  • 举报
回复
哪儿有的事,MFC和raw socket没啥冲突的地方,socket2当然也可以用的。
chjshen 2005-10-19
  • 打赏
  • 举报
回复
好像是在vc6的mfc里是没有办法实现raw socket 的吧,我记得mcf 只支持socket 1.1 而不支持 socket 2
呀看来得用原始的方法了研究ing

i_noname 2005-09-24
  • 打赏
  • 举报
回复
msdn下有个例子的,你找一下ping sample
sal 2005-09-24
  • 打赏
  • 举报
回复
代码里的原始套接字是没有用到mfc的,是自己建的。
gnixemos 2005-09-22
  • 打赏
  • 举报
回复
mfc可以用row socket吗
sal 2005-09-21
  • 打赏
  • 举报
回复
guyue6670,我的qq号是173940511,我们可以讨论一下,呵呵
美丽海洋 2005-09-19
  • 打赏
  • 举报
回复
我也正做这个问题,不知道怎么实现,楼主能不能大家共享一下你的成果。
sal 2005-09-19
  • 打赏
  • 举报
回复
前一段时间有事没写程序。我现在还没研究到超时这一步,惭愧啊。我想问问fisher0303,
typedef struct ip_optionhdr
{
unsigned char code; // Option type
unsigned char len; // Length of option hdr
unsigned char ptr; // Offset into options
unsigned long addr[9]; // List of IP addrs
}IpOptionHeader;
这个结构是什么意思啊,是在返回数据报中紧接着ip数据报的报头以后的部分吗,如果是的话,这部分记录的数据起什么作用,尤其是addr[9]这个数组,这9个ip地址是哪儿来的啊?因为DecodeIPOption这个函数我看不懂啊。谢谢!
sal 2005-09-19
  • 打赏
  • 举报
回复
我正在做啊,连最基本的功能都还没实现呢,我的基本思路就是在VC中,照搬fisher0303提供的代码写进去,不过有些函数都封装在类中了,到时还不知道行不行呢。
nkwesley 2005-09-19
  • 打赏
  • 举报
回复
我有例子
flyjzy5 2005-09-15
  • 打赏
  • 举报
回复
不好意思,说错了,超时设置用-w。我的意思是,系统自带的ping最小间隔好像是1s,如何设置<1s呢?
flyjzy5 2005-09-15
  • 打赏
  • 举报
回复
bobob(静思--潜心研究PDF) ,你这是一个新的方案,但是怎样设置超时呢?
Tranquillo 2005-08-09
  • 打赏
  • 举报
回复
在MFC框架下直接用原始套接字,有什么问题
102442 2005-08-09
  • 打赏
  • 举报
回复
22
sal 2005-08-09
  • 打赏
  • 举报
回复
我现在正是在MFC的框架下使用fisher0303提供的这段代码,程序还没有写完,现在还看不出有什么不妥,呵呵。
Practise_Think 2005-08-08
  • 打赏
  • 举报
回复
用代码实现ping的协议
bobob 2005-08-08
  • 打赏
  • 举报
回复
用管道,m_strResult里面保存的是执行结果
{

SECURITY_ATTRIBUTES sa;
HANDLE hRead,hWrite;

sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if (!CreatePipe(&hRead,&hWrite,&sa,0))
{
MessageBox("Error On CreatePipe()");
return;
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError = hWrite;
si.hStdOutput = hWrite;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
if (!CreateProcess(NULL,"ping 127.0.0.1 -t"
,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
{
DWORD dw = GetLastError();
MessageBox("Error on CreateProcess()");
return;
}
CloseHandle(hWrite);

char buffer[4096] = {0};
DWORD bytesRead;
while (true)
{
if (ReadFile(hRead,buffer,4095,&bytesRead,NULL) == NULL)
break;
m_strResult+= buffer;
UpdateData(false);
Sleep(200);
}
}
rylante 2005-08-08
  • 打赏
  • 举报
回复
ShellExecute
加载更多回复(10)

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧