सर्वर से प्रतिक्रिया प्राप्त करते समय मेरा आरईवी फ़ंक्शन लटकता है। ग मेंसॉकेट प्रोग्रामिंग सी/सी ++ - आरईवी समारोह लटकता है?
क्लाइंट साइड कोड/C++:
void sockStuff() {
int sock, bytes_recieved,bytes_send;
char send_data[1024], recv_data[4096];
struct hostent *host;
struct sockaddr_in server_addr;
host = gethostbyname("127.0.0.1");
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("SocketError");
exit(1);
}
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(50500);
server_addr.sin_addr = *((struct in_addr *) host->h_addr);
bzero(&(server_addr.sin_zero), 8);
if (connect(sock, (struct sockaddr *) &server_addr, sizeof(struct sockaddr))
== -1) {
perror("ConnectToError");
exit(1);
}
bytes_send = send(sock, a, strlen(a), 0);
bytes_send = shutdown(sock, 1);
bytes_recieved = recv(sock, recv_data, 4096, 0); //Where the program hangs??
recv_data[bytes_recieved] = '\0';
printf("\nRecieved data = %s ", recv_data);
cout << endl << endl;
shutdown(sock,2);
}
मेरा ग्राहक C/C++ और सर्वर साइड है OpenEdge प्रगति है। कृपया कोड देखें और सुझाव दें कि इसके साथ क्या गलत हुआ ??
आपको जादू संख्या 8 के बजाय sizeof (server_addr.sin_zero) का उपयोग करना चाहिए। या फिर भी पूरी संरचना को शून्य करें और फिर उन फ़ील्ड को सेट करें जिन्हें आप रुचि रखते हैं। –
हाय नील, क्या आप इसे और विस्तारित करने के लिए कृपया विस्तार से बता सकते हैं (server_addr.sin_zero) संख्या 8 की बजाय लेकिन अभी भी कोई भाग्य नहीं है। धन्यवाद। – Vishal