C++ libevent&x201C;evutil_ersatz_袜子对”;功能被卡住了

C++ libevent&x201C;evutil_ersatz_袜子对”;功能被卡住了,c++,sockets,libevent,C++,Sockets,Libevent,代码来自“https://github.com/libevent/libevent/blob/master/evutil.c“,第460行 问题是accept函数被卡住了 系统版本:Windows 7 7601 x64 int evutil_ersatz_socketpair_(int family, int type, int protocol, evutil_socket_t fd[2]) { ...... listener = socket(AF_INET, type,

代码来自“https://github.com/libevent/libevent/blob/master/evutil.c“,第460行

问题是accept函数被卡住了

系统版本:Windows 7 7601 x64

int evutil_ersatz_socketpair_(int family, int type, int protocol, evutil_socket_t fd[2])
{
    ......

    listener = socket(AF_INET, type, 0);
    if (listener < 0)
        return -1;
    memset(&listen_addr, 0, sizeof(listen_addr));
    listen_addr.sin_family = AF_INET;
    listen_addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
    listen_addr.sin_port = 0;   /* kernel chooses port.  */
    if (bind(listener, (struct sockaddr *) &listen_addr, sizeof (listen_addr))
        == -1)
        goto tidy_up_and_fail;
    if (listen(listener, 1) == -1)
        goto tidy_up_and_fail;

    connector = socket(AF_INET, type, 0);
    if (connector < 0)
        goto tidy_up_and_fail;

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

    /* We want to find out the port number to connect to.  */
    size = sizeof(connect_addr);
    if (getsockname(listener, (struct sockaddr *) &connect_addr, &size) == -1)
        goto tidy_up_and_fail;
    if (size != sizeof (connect_addr))
        goto abort_tidy_up_and_fail;
    if (connect(connector, (struct sockaddr *) &connect_addr,
                sizeof(connect_addr)) == -1)
        goto tidy_up_and_fail;

    size = sizeof(listen_addr);
    acceptor = accept(listener, (struct sockaddr *) &listen_addr, &size);
    if (acceptor < 0)
        goto tidy_up_and_fail;
    ......
}
int-evutil\u-ersatz\u-socketpair\u(int系列,int类型,int协议,evutil\u-socket\t fd[2])
{
......
侦听器=套接字(AF_INET,type,0);
if(侦听器<0)
返回-1;
memset(&listen\u addr,0,sizeof(listen\u addr));
收听地址:sin家庭=AF\u INET;
侦听\u addr.sin\u addr.s\u addr=htonl(INADDR\u环回);
listen\u addr.sin\u port=0;/*内核选择端口*/
if(bind(listener,(struct sockaddr*)和listen\u addr,sizeof(listen\u addr))
== -1)
去整理一下,结果失败了;
如果(侦听器,1)=-1)
去整理一下,结果失败了;
连接器=插座(自动线,类型,0);
如果(连接器<0)
去整理一下,结果失败了;
memset(&connect_addr,0,sizeof(connect_addr));
/*我们想找出要连接的端口号*/
大小=sizeof(连接地址);
if(getsockname(listener,(struct sockaddr*)&connect\u addr,&size)=-1)
去整理一下,结果失败了;
如果(大小!=sizeof(连接地址))
放弃、整理、失败;
如果(连接(连接器,(结构sockaddr*)和连接地址,
sizeof(连接地址))=-1)
去整理一下,结果失败了;
大小=sizeof(侦听地址);
acceptor=accept(侦听器,(结构sockaddr*)和侦听器地址和大小);
if(接受方<0)
去整理一下,结果失败了;
......
}

您知道accept的作用吗?accept函数是一个系统调用。