WSADATA dwRetval;
if (WSAStartup(MAKEWORD(2,2),&dwRetval)!=0)    //开启Socket
{
printf("WSAStartup failed.\n");
return 1;
}

void CGetHostNameDlg::OnGetHostNameIP()
{
char   szHostname[128];
char   *ipName = new char[16];  //存放IP
struct addrinfo   *result = NULL;     //指向addrinfo链表
struct addrinfo   *ptr     = NULL;
struct addrinfo    hints;       //标识获取的信息
int      error;

UpdateData();           //将控件的值赋值给成员变量
gethostname(szHostname,128);
m_strName = szHostname;
struct sockaddr_in *sockaddr_ipv4;

// Setup the hints address info structure
// which is passed to the getaddrinfo() function
ZeroMemory(&hints,sizeof(hints));
hints.ai_family = AF_INET;        //指示IP类型(若用AF_UNSPEC不能得到本地地址
hints.ai_protocol = IPPROTO_UDP;     //指示协议类型
hints.ai_socktype = SOCK_DGRAM;     //套接字类型

error = getaddrinfo(szHostname,NULL,&hints,&result);
if (error!=0)
{
printf("getaddrinfo failed with error: %d\n", error);
WSACleanup();
exit(1);
}

for (ptr = result; ptr != NULL;ptr=ptr->ai_next)
{
sockaddr_ipv4 = (sockaddr_in *)ptr->ai_addr;
}

// m_strIP =inet_ntoa( sockaddr_ipv4->sin_addr);  //已经不用
m_strIP = InetNtop(AF_INET, &sockaddr_ipv4->sin_addr ,(PWSTR)ipName,16);
UpdateData(false);      //将成员变量的值赋值控件

freeaddrinfo(result);       //Free a list of address information structures
WSACleanup();        //调用WSACleanup(),将其从Windows Sockets的实现中注销,并且该实现释放为应用程序或DLL分配的任何资源.任何打开的并已建立连接的SOCK_STREAM类型套接口在调用WSACleanup()时会重置; 而已经由closesocket()关闭却仍有要发送的悬而未决数据的套接口则不会受影响- 该数据仍要发送.

}

struct sockaddr_in{

short sin_family;

unsigned short sin_port;

struct in_addr sin_addr;

char sin_zero[8];

};

参数

sin_family
地址系列(必须是 AF_INET)。

sin_port
IP 端口。

sin_addr
IP 地址。

sin_zero
填充结构使其与 SOCKADDR 的大小一致。

struct sockaddr {

unsigned short sa_family;

char sa_data[14];

};

struct sockaddr 和 sockaddr_in 可相互转换,sockaddr_ipv4 = (sockaddr_in *)ptr->ai_addr;因为结构体字节大小相同。

Getaddrinfo()笔记的更多相关文章

  1. python核心编程第二版笔记

    python核心编程第二版笔记由网友提供:open168 python核心编程--笔记(很详细,建议收藏) 解释器options:1.1 –d   提供调试输出1.2 –O   生成优化的字节码(生成 ...

  2. python核心编程--笔记

    python核心编程--笔记 的解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找pyt ...

  3. Python Socket API 笔记

    将上节中的C#该成Python版的容易程度大大超出了我的意料之外.从来没有发现,仅仅用灰尘简单的几句话就实现了该程序的主要功能,可见python的简易和强大之处.这里先对SocketAPI 做一下总结 ...

  4. 转 网络编程学习笔记一:Socket编程

    题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公司使用的一些控件的开发,浏览器兼容性搞死人:但主要是因为这段时间一直在看html5的东西,看到web socket时觉得很有 ...

  5. CSAPP 并发编程读书笔记

    CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...

  6. 布客·ApacheCN 翻译/校对/笔记整理活动进度公告 2020.1

    注意 请贡献者查看参与方式,然后直接在 ISSUE 中认领. 翻译/校对三个文档就可以申请当负责人,我们会把你拉进合伙人群.翻译/校对五个文档的贡献者,可以申请实习证明. 请私聊片刻(52981514 ...

  7. git-简单流程(学习笔记)

    这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...

  8. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  9. SQL Server技术内幕笔记合集

    SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...

随机推荐

  1. Oracle - ORA-12505, TNS:listener does not currently know of SID given in connect descriptor 解决

    java.sql.SQLException: Listener refused the connection with the following error: ORA-12505, TNS:list ...

  2. Quartz任务调度器

    在使用jdk的timer时发现无法满足开发需求:即无法在指定的日期进行执行任务. 这便引入一个优秀的开源任务调度框架“quartz”.   这里加入的是quartz-1.8.6版本.Quart的官网: ...

  3. 关于HTML面试题汇总

    一.doctype的作用,严格与混杂模式的区别,有何意义 1.语法格式:<!DOCTYPE html> 2.<!DOCTYPE>不是Html标签,而是告知浏览器此页面使用哪个H ...

  4. 推荐12个最好的 JavaScript 图形绘制库

    众多周知,图形和图表要比文本更具表现力和说服力.图表是数据图形化的表示,通过形象的图表来展示数据,比如条形图,折线图,饼图等等.可视化图表可以帮助开发者更容易理解复杂的数据,提高生产的效率和 Web  ...

  5. HHKB MAC 配置指南 操作指南 快捷键

    1. 设备: mac电脑一台.hhkb键盘一个 2. 初级配置 (1)调节hhkb的模式为Macintosh模式:011001 (打开键盘侧边的滑盖,按照这个顺序调正) (2)Mac电脑安装官方驱动  ...

  6. angular源码分析:angular的源代码目录结构说明

    一.读源码,是选择"编译合并后"的呢还是"编译前的"呢? 有朋友说,读angular源码,直接看编译后的,多好,不用管模块间的关系,从上往下读就好了.但是在我看 ...

  7. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q36-Q39)

    Question 36 You are designing a SharePoint 2010 application. You need to design the application so t ...

  8. Jquery+Ajax下拉框级联查询

  9. jQuery倒计时

    Css------------------------------------------------------------------------------------------------- ...

  10. android studio 使用SVN 锁定文件,防止别人修改(基于Android studio 1.4 )

    首先假设开发 A , 和 开发 B , 在使用 SVN 进行项目管理.那么A如何才能 某个锁定文件,防止B修改. 1.第一步,给这个文件加锁    完成这一步,则这个文件就别锁定了. 2.第二步,假如 ...