2011-05-20 211 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

相關問題