首页 > 编程语言 >网络程序设计 实验5 图形化Ping工具

网络程序设计 实验5 图形化Ping工具

时间:2022-12-27 21:13:17浏览次数:44  
标签:addrinfo CString Ping LPCSTR 实验 程序设计 报错 图形化

实验5 图形化Ping工具

实验目的:
用图形界面实现Ping操作。
开发语言与工具:
VC
实验要求:
1.使用MFC编程。
2.界面上有目标地址栏, 信息框 和 ping按钮。
3.使用原始套接字实现ping操作。结果显示在信息框中。

看着实验3的实验要求有点发憷,所以换成实验5,准备先做点简单的
不过实际上比我想象的更花时间
老师ppt里的代码好多,抄了好久
本来实验五的博客已经写了一部分,因为昨天任务管理器的故障,数据全丢失了
我也没法写那么细,抄一下自己的实验报告算了

实验的细节
A)在main函数中,发生错误时,一般的操作是
报错然后return 1;

但是在MFC消息处理函数,使用return 1编译会报错
这时候要用return,不用返回数字

B)我实现消息处理框内容的显示是通过CString,但是在传参给PING()函数的时候 CString类型是无法自动转化为LPCSTR类型的
我找到的办法是,使用CString的GetBuffer()完成转换
LPCSTR pstrHost = (LPCSTR)ipinfo.GetBuffer(ipinfo.GetLength());

C)PPT中的代码是用原始套接字通过控制台输出信息,
而我是通过MFC实现的
所以需要把所有的printf改成AddString(),(因此错误码也要转换成CString)

D)CString.Format()使用的时候需要注意加上‘L’,哪怕是为了转换int之类的也需要 这么做,不然会报错

同样的,把LPCSTR转化为CString,也需要加上‘L’

E)调试程序的时候,发现在程序在getaddrinfo()阶段出错,函数返回11001
(如图所示,哪怕ping主机也会出错)

网上找到的说法:1、host里没有删掉注释;2、ip后没有去掉'\n'
感觉对我来说都不靠谱,因为我本机都连不上

我查到的getaddrinfo()函数解析:
int getaddrinfo( const char *hostname, const char *service, const struct addrinfo *hints, struct addrinfo **result );
参数说明
hostname:一个主机名或者地址串(IPv4的点分十进制串或者IPv6的16进制串)
service:服务名可以是十进制的端口号,也可以是已定义的服务名称,如ftp、http等
hints:可以是一个空指针,也可以是一个指向某个addrinfo结构体的指针,调用者在这个结构中填入关于期望返回的信息类型的暗示。举例来说:如果指定的服务既支持TCP也支持UDP,那么调用者可以把hints结构中的ai_socktype成员设置成SOCK_DGRAM使得返回的仅仅是适用于数据报套接口的信息。
result:本函数通过result指针参数返回一个指向addrinfo结构体链表的指针。
返回值:0——成功,非0——出错

标签:addrinfo,CString,Ping,LPCSTR,实验,程序设计,报错,图形化
From: https://www.cnblogs.com/yes-sir/p/17008994.html

相关文章

  • 不用路由器让开发板ping通外网
    前言:之前在学校折腾openwrt就把开发板和电脑都接到路由器上了,回家只能用无线网,双网卡不同网段这样开发板上网就得转发一下才行,我选择的方式是开启linux虚拟机的转发功......
  • 20221227ping命令+格西调试精灵的使用
      先用格西调试精灵,”通信接口“连接后才能ping通 ping是什么?ping就是windows、Unix或者Linux系统下达的一个命令,也可以说是一个通信协议,并且是TCP/IP协议的一......
  • 《C语言程序设计》课程设计实践考核说明
    《C语言程序设计》课程设计实践考核说明《C语言程序设计》课程设计实践考核说明本次设计是为加强学生的《C语言程序设计》课程的实际应用能力而进行的专门训练。选题考虑......
  • POSIX 多线程程序设计
     POSIX 多线程程序设计 目录表 ​​摘要​​  ​​译者序​​​Pthreads概述 ​​​什么是线程? ​​​​什么是Pthreads? ​​​​为什么使用Pthreads? ​......
  • 深信服防火墙重启后ping不通问题
    经测试,深信服在防火墙重启后会发生部分交换机及下联的服务器ping不通防火墙管理地址的情况。这个问题是因为网关交换机上关于防火墙管理地址的arp未更新导致的。华为交换......
  • 2021级《JAVA语言程序设计》上机考试试题9
    专业负责人功能页  <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head><metacharset="UTF-......
  • 2021级《JAVA语言程序设计》上机考试试题10
    教学副院长功能页 <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head><metacharset="UTF-8">......
  • 2021级《JAVA语言程序设计》上机考试试题
    勉强写完了CardpackageBean;publicclassCard{ privateStringCardId; privateStringCardData; privateStringCourseName; privateStringCourseTeacher; priv......
  • 2021级《JAVA语言程序设计》上机考试试题8
    专业教师功能页: <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head><metacharset="UTF-8"><......
  • kali ping不通windows,而windows可以ping同kali
    kaliping不通windows,而windows可以ping同kalikaliip->192.168.248.131win10ip->192.168.248.130打开网络和Internet设置,点击Windows防火墙关闭防火墙在kali中......