2011-05-20 213 views
0

我正在使用套接字调用调用Web服务。我想阻止我的客户端应用程序“挂起”,直到套接字调用超时(如果服务未运行)。如果服务正在运行,该应用工作正常。即使服务未运行,创建锁定和连接也是成功的。此外,需要包含哪些头文件库?C程序 - 如何检查Web服务是否正在运行

//Create the Socket 
sockfd = socket(AF_INET, SOCK_STREAM, 0); 

if (sockfd < 0) 
{ 
    printf("errno %d: %s\n",errno,strerror(errno)); 
    set_output_data(in_out_address->error, 
        "E991", 
        ERROR_SIZE); 
    return; 
}; 
printf("errno %d: %s\n",errno,strerror(errno)); 
printf("sockfd %d: %s\n",sockfd,"socket call"); 

//Connect 
errno=0; 
connresult = connect(sockfd,(struct sockaddr *)&server_addr, 
             sizeof(server_addr)); 
if (connresult < 0) 
{ 
    printf("errno %d: %s\n",errno,strerror(errno)); 
    set_output_data(in_out_address->error, 
        "E992", 
        ERROR_SIZE); 
    return; 
} 
printf("errno %d: %s\n",errno,strerror(errno)); 
printf("connresult %d: %s\n",connresult,"connection call"); 

// check if service is running before we send data 

回答

0

Web服务通过HTTP工作。您在必须发送HTTP请求之前得到任何答复。我建议寻找像gsoap这样的图书馆,而不是试图通过手工来做到这一点。

+0

我实际上使用HTTP发送XML数据,但应用程序正在等待“接收”应答,当服务没有运行。我试图防止挂起,但不知道正确的'C'语法来检查服务的状态。 – JustFillingIn 2011-05-23 11:40:38

+0

它没有“C语法”。你能做的最好的是超时。等待'select()'或'poll()'是做这件事的一种方法。 – 2011-05-23 12:53:35

相关问题