【问题标题】:Simple server in c++ . Freeaddinfo (Segmenataion fault) MSDN Examplec++ 中的简单服务器。 Freeaddinfo(Segmenataion 故障)MSDN 示例
【发布时间】:2017-11-19 09:40:43
【问题描述】:

我是服务器开发的新手。并为新手问题和我糟糕的英语感到抱歉。 我正在尝试创建一个简单的基于服务器的 MSDN 示例。我不知道在哪里可以获取有关 ms 套接字的信息。这是我的代码

#define _WIN32_WINNT 0x501
#include <iostream>
#include <winsock2.h>
#include <ws2tcpip.h>
#pragma comment(lib, "Ws2_32.lib")
#define DEFAULT_PORT "2343"
#define DEFAULT_BUFLEN 512

int main() {

char recvbuf[DEFAULT_BUFLEN];
int iResult, iSendResult;
int recvbuflen = DEFAULT_BUFLEN;

struct addrinfo *result = nullptr, *ptr = nullptr, hints;

WSADATA wsaData;

iResult = WSAStartup(MAKEWORD(2,2),&wsaData);
if (iResult != 0 ){
    std:: cout << "WSAStartup failed: \n" << iResult;
    return 1;
}

memset(&hints, 0 , sizeof(hints));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol  = IPPROTO_TCP;
hints.ai_flags = AI_PASSIVE;


iResult = getaddrinfo(NULL,DEFAULT_PORT,&hints,&result);
if(iResult !=0){
    std:: cout << "getaddrinfo failed: \n" << iResult;
    //WSACleanup();
    return 1;
}


SOCKET ListenSock = INVALID_SOCKET;


ListenSock = socket(result->ai_family, result->ai_socktype, result->ai_protocol);

if(ListenSock = INVALID_SOCKET){
    std:: cout << "Error at socket \n" << WSAGetLastError() << std::endl;
    freeaddrinfo(result);
    //WSACleanup();
}

iResult = bind(ListenSock,result -> ai_addr, (int)result -> ai_addrlen);
if (iResult == SOCKET_ERROR){
    std:: cout << "bind failed \n" << WSAGetLastError() << std::endl;

//I got a error : Signal: SIGSEGV (Segmentation fault) - here 

    freeaddrinfo(result);
    closesocket(ListenSock);
    //WSACleanup();
}
freeaddrinfo(result);

我想知道如何解决它,如果你能帮助我,非常感谢你。

【问题讨论】:

  • 使用调试器。失败时退出或返回。
  • 是的。谢谢)

标签: c++ server


【解决方案1】:
if(ListenSock = INVALID_SOCKET)

应该是:

if(ListenSock == INVALID_SOCKET)

【讨论】:

  • 哇。哦,我的上帝 :D 对不起。我在我的 IDE 中看到了一条线索,但是..idk 为什么我不这样做:D 非常感谢
猜你喜欢
  • 1970-01-01
  • 2015-09-07
  • 2013-06-18
  • 2021-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-14
  • 1970-01-01
相关资源
最近更新 更多