为什么我要连接到服务器?

时间:2015-03-23 17:30:53

标签: c++ sockets

我正在使用g++ 4.9.2编译器并编写以下代码来尝试使用套接字的第一个示例。

char *buf = new char[1000];
int iResult;

int main(){    
   WSADATA wsaData;
    SOCKET ConnectSocket = INVALID_SOCKET;
    addrinfo hints, *result;
    hints.ai_family = AF_INET;
    hints.ai_socktype = SOCK_STREAM;
    hints.ai_protocol = IPPROTO_TCP;
    std::cout << WSAStartup(MAKEWORD(2,2), &wsaData) << std::endl;
    iResult = getaddrinfo("173.194.40.231", "80", &hints, &result);
    std::cout << iResult;
    ConnectSocket = socket(result -> ai_family, result -> ai_socktype, result -> ai_protocol); //1, HERE
    connect(ConnectSocket, result->ai_addr, result->ai_addrlen);
}

我在Segmentation fault得到1的问题。由于getaddrinfo("173.194.40.231", "80", &hints, &result);返回11003,因此&result指向NULL。为什么?我键入了有效的地址和端口。

它是google.com,我们可以在浏览器中打开它。有人帮帮我吗?

1 个答案:

答案 0 :(得分:1)

memset(&hints, 0, sizeof(hints));

getaddrinfo()尝试填充提供的现有数据。垃圾数据使该功能混乱。