cpp socket接受但不能在Ajax GET上接收

时间:2016-12-02 10:46:32

标签: c++ ajax sockets google-chrome http

我正在WinCE上的CPP程序中实现Web服务。 我放了一个Web服务器(HTTP),在端口8080上监听,并且单一测试工作(使用邮递员)。

我放入一个html页面,一个简单的ajax请求(GET)来获取JSON数组。

初始网络服务器:

struct sockaddr_in serv_addr;
int optlen = 0;
struct timeval vtime;

SCK_ListenServerSocket = socket(AF_INET, SOCK_STREAM, 0);
if (SCK_ListenServerSocket < 0)
    return (WBS_Service_Unavailable_503);

// Set receive timeout
optlen = sizeof(struct timeval);

if(getsockopt(SCK_ListenServerSocket, SOL_SOCKET, SO_RCVTIMEO, (char *) &vtime, &optlen) == -1)
{
    closesocket(SCK_ListenServerSocket);
    return (WBS_Service_Unavailable_503);
}
else
{
    vtime.tv_sec = SCK_SRV_RECV_MS_TIMEOUT; // ms
    vtime.tv_usec = 0;
    if(setsockopt(SCK_ListenServerSocket, SOL_SOCKET, SO_RCVTIMEO, (const char *) &vtime, optlen) == -1)
    {
        closesocket(SCK_ListenServerSocket);
        return (WBS_Service_Unavailable_503);
    }
}

memset((void *)&serv_addr, 0, sizeof(serv_addr));

serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons(port);

if (bind(SCK_ListenServerSocket, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)
{
    closesocket(SCK_ListenServerSocket);
    SCK_ListenServerSocket = -1;
    return (WBS_Service_Unavailable_503);
}

if(listen(SCK_ListenServerSocket, 1) < 0)
{
    closesocket(SCK_ListenServerSocket);
    SCK_ListenServerSocket = -1;
    return (WBS_Service_Unavailable_503);
}

return ret;

在一个线程中,该函数被调用:

accept_socket = accept(SCK_ListenServerSocket, NULL, NULL);

if(accept_socket < 0)
    n = 0;
else
{

    n = recv(accept_socket, &buffer[0], 512, 0); //Read 512 bytes

    DO THE WORK
}

问题:

当我在Chrome上启动网页时,套接字会正确打开但从未收到过。我不知道为什么。当我使用POSTMAN时,它就像一个魅力。

感谢您帮助我。

编辑:在阻塞套接字操作中,调用accept但是recv阻塞。启动大量请求会解锁recv,但是当失败时,recv响应为0。 当我在WinCE(同一目标)上加载网站时,会出现问题。从我的计算机加载网站时,只发送请求,没问题

0 个答案:

没有答案