Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 来自0.0.0.0:32772的意外套接字连接_C++_Sockets_Network Programming - Fatal编程技术网

C++ 来自0.0.0.0:32772的意外套接字连接

C++ 来自0.0.0.0:32772的意外套接字连接,c++,sockets,network-programming,C++,Sockets,Network Programming,为什么??ps:TryAccept也将在init之后的其他地方调用我看不出这段代码在任何地方是如何工作的。只要m_gui_socket不等于INVALID_socket,SocketDebugger::tryaaccept将无条件打印“profiler connected”,并在中显示未初始化的sockaddr_的内容。里面没有任何东西真正执行接受操作 我看不出这段代码在任何地方都能工作。只要m_gui_socket不等于INVALID_socket,SocketDebugger::tryaac

为什么??ps:TryAccept也将在init之后的其他地方调用

我看不出这段代码在任何地方是如何工作的。只要
m_gui_socket
不等于
INVALID_socket
SocketDebugger::tryaaccept
将无条件打印“profiler connected”,并在中显示未初始化的
sockaddr_的内容。里面没有任何东西真正执行接受操作

我看不出这段代码在任何地方都能工作。只要
m_gui_socket
不等于
INVALID_socket
SocketDebugger::tryaaccept
将无条件打印“profiler connected”,并在
中显示未初始化的
sockaddr_的内容。里面没有任何东西真正执行接受操作

对不起,我已经更新了问题。
TryAccept
将在tick函数中的其他位置调用,第一个连接的地址是
0.0.0:32772
,就像往常一样。可能是
PISocket::Accept
(或者它的使用方式)有问题,但是您的示例代码中没有包含它,所以我无法调试它。抱歉,我已经更新了这个问题。
TryAccept
将在tick函数中的其他位置调用,第一个连接的地址是
0.0.0:32772
,就像往常一样。可能是
PISocket::Accept
(或者它的使用方式)有问题,但是您的示例代码中没有包含它,所以我无法调试它。
int SocketDebugger::Init(unsigned short p)
{
    if (m_state != dsDisconnect)
    {
        return 0;
    }

    if (PISocket::Startup()) 
    {
        return -1;
    }

    m_port = p;
    m_debug_socket = PISocket::Socket(PF_INET, SOCK_STREAM, IPPROTO_IP);
    if (m_debug_socket == INVALID_SOCKET) 
    {
        Log(LEVEL_PYDEBUGGER, "GetLastError: %d", PISocket::Errno());
        return -2;
    }

    sockaddr_in local;
    memset(&local, 0, sizeof(local));
    local.sin_family = PF_INET;
    local.sin_port = htons(m_port);

    int ret = PISocket::Bind(m_debug_socket, (sockaddr*)&local);
    if (ret == SOCKET_ERROR)
    {
        PISocket::Close(m_debug_socket);
        m_debug_socket = INVALID_SOCKET;
        return -3;
    }

    ret = PISocket::Listen(m_debug_socket, 0);
    if (ret == SOCKET_ERROR)
    {
        PISocket::Close(m_debug_socket);
        m_debug_socket = INVALID_SOCKET;
        return -4;
    }

    unsigned long nonblocking = 1;
    ret = PISocket::Ioctl(m_debug_socket, FIONBIO, &nonblocking);
    if (ret == SOCKET_ERROR)
    {
        PISocket::Close(m_debug_socket);
        m_debug_socket = INVALID_SOCKET;
        return -5;
    }

    m_state = dsListen;


    unsigned long t = (unsigned long)PITime() + 2000;

    do 
    {
        TryAccept();
    }

    while ((unsigned long)PITime() < t && m_state == dsListen);
    LogInfo("profiler socket init port: %d", port)
    return 0;
}

bool SocketDebugger::TryAccept()
{
    sockaddr_in local;
    //int len = sizeof(local);
    // set non blocking...  

    m_gui_socket = PISocket::Accept(m_debug_socket, (sockaddr*)&local);

    if (m_gui_socket == INVALID_SOCKET) 
    {       
        if (PISocket::Errno() == EWOULDBLOCK)
        {   
            return false;
        }
    }

    LogInfo("profiler connected! %s:%d", inet_ntoa(local.sin_addr), local.sin_port);
    m_state = dsConnect;
    m_send_stream.clear();
    m_recv_stream.clear();
    return true;
}
5   [23:43:04.368]   [UTILS] [INFO] profiler connected! 0.0.0.0:32772
6   [23:43:04.368]   [UTILS] [INFO] profiler socket init port: 7776, 0