gethostbyname(domain) 老是返回 NULL, 凌乱了

struct hostent *h = gethostbyname(pDomain);

今天在写一个下载网上文件到本地的小程序,在测试时发现 gethostbyname()老是返回NULL。

解析不了域名了。

问题出哪了? 相关的代码是从原来写过的项目中直接复制过来了,原来的项目可以正常工作啊。

经过10多分钟的检查,终于找到原因,忘记了: Winsock服务的初始化 -> WSAStartup()


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

/*

    为了在应用程序当中调用任何一个Winsock API函数,首先第一件事情就是必须通过WSAStartup函数完成对Winsock服务的初始化,

    因此需要调用WSAStartup函数。使用Socket的程序在使用Socket之前必须调用WSAStartup函数。

    */

    WORD wVersionRequested;

    WSADATA wsaData;

    int ret;

    //WinSock初始化

    wVersionRequested = MAKEWORD(2, 2); //希望使用的WinSock DLL的版本

    ret = WSAStartup(wVersionRequested, &wsaData);

    if(ret != 0)

    {

        appLog("WSAStartup() failed!");

        return FALSE;

    }

    //确认WinSock DLL支持版本2.2

    if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)

    {

        appLog("Invalid WinSock version!");

        WSACleanup();

        return FALSE;

    }

 

2014-06-28

时间: 2024-12-27 10:30:29

gethostbyname(domain) 老是返回 NULL, 凌乱了的相关文章

在对listctrl的控件进行重载的过程中,GetHeaderCtrl()返回NULL的问题

先谈谈我的问题吧! 在使用listctrl的过程中,我需要在列表头部添加checkbox,实现全选的功能. 经过网上资料的罗列,我找到了一个demo,使用的重绘的方法,在使用的过程中,我发现我的列表头无法绘出checkbox,于是开始找问题,最后发现是因为cheadctlcl这个重载的类里面的函数无法响应, 于是问题一步步逼近,为什么重载函数无法调用?cheadctlcl类的所有函数都无法响应.于是找了下问题,最后发现问题出在: void CListCtrlEx::PreSubclassWind

关于GestureDetector的onFling方法e1返回null问题

解决办法: 定义一个MotionEvent对象,在ondown里面赋值  private MotionEvent mLastOnDownEvent = null; @Override         public boolean onDown(MotionEvent arg0) {          mLastOnDownEvent=arg0;         return false;       } @Override     public boolean onFling(MotionEve

PHP json_decode返回null解析失败原因

在PHP5.4之前 json_decode函数有两个参数json_decode有两个参数,第一个是待解析的字符串,第二个是是否解析为Arrayjson_decode要求的字符串比较严格:(1)使用UTF-8编码(2)不能在最后元素有逗号(3)不能使用单引号(4)不能有r,t,如果有请替换所以问题来了,不小心在返回的json字符串中返回了BOM头的不可见字符,某些编辑器默认会加上BOM头,如下处理才能正确解析json数据: $result = json_decode(trim($contents,

Java Socket编程readLine返回null,read返回-1的条件

客户端正常关闭socket的时候,服务器端的readLine()方法会返回null,或者read()方法会返回-1 Java Socket编程readLine返回null,read返回-1的条件,布布扣,bubuko.com

一个开发原则,永远不要返回NULL

看一篇文章:10个经典的java开发原则,里面一个原则:永远不要返回NULL. 为什么,因为很多代码都是 a.b(......).c(...) 这么连着调用.如果每层调用都要检查是否为空的话,代码就太难看了. 但是不返回null,返回什么呢?显然要反悔一个类的实例,但是怎么保证得到的结果是预期的呢,也就是说,怎么能保证这样虽然不会报“未交对象引用设置到对象的实例”(实际上就是空引用)这个错误,但是能得到“正确”的结果呢.显然,应该是nul但是没有返回null是得不到正确的结果,但是我们要保证结果

WORD Application.Documents.Open函数返回null的一种解决方法

DCOM Config Setting for "Microsoft Office Word 97 - 2003 Document" 内部配置一切正常,但Application.Documents.Open函数还是返回null.下面是一个解决方法: "C:\Windows\SysWOW64\config\systemprofile\"目录下创建一个"Desktop"目录. WORD Application.Documents.Open函数返回nu

关于SQL语句中SUM函数返回NULL的解决办法

SUM 是SQL语句中的标准求和函数,如果没有符合条件的记录,那么SUM函数会返回NULL. 但多数情况下,我们希望如果没有符合条件记录的情况下,我们希望它返回0,而不是NULL,那么我们可以使用例如下面的方法来处理: SELECT COALESCE(SUM(name),0) FROM person WHERE id > 0   行了,这下就不用费事去处理返回结果是否为NULL的情况了. COALESCE 函数的意思是返回参数列表中第一个为空的值,该方法允许传入多个参数,该函数也是SQL中的标准

Android开发:getViewById返回null的原因定位

最近在研究开发一些基于Android的App,遇到了一些问题,其中一个比较关键的是在Activity中的onCreate()方法中获取Button对象,代码大概如下: private Button mTrueButton; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_quiz); mTr

早期malloc分配时,如果内存耗尽分配不出来,会直接返回NULL。现在分配不出来,直接抛出异常(可使用nothrow关键字)

今天和同事review代码时,发现这样的一段代码: Manager * pManager = new Manager(); if(NULL == pManager) { //记录日志 return false; } 然后,一个同事就说这样写欠妥,应该改为: Manager * pManager = NULL; try { pManager = new Manager(); } catch(std::bad_alloc e) { //... } 我查了一下资料,发现: 1.malloc分配时,如果