2012-02-01 11 views
12

मैं नेटवर्किंग के लिए बीज की मार्गदर्शिका के साथ अनुसरण कर रहा हूं और यह वास्तव में अच्छा रहा है क्योंकि मैं सब कुछ अच्छी तरह से समझता हूं और वह इसे महान समझाता है। हालांकि, जब मैं कुछ शानदार चीजों का परीक्षण करना चाहता हूं तो वह मुझे दिखा रहा है, यह काम नहीं करेगा! :(sockaddr_in undeclared पहचानकर्ता

मुझे यकीन है कि नहीं कर रहा हूँ, जहां वास्तव में sockaddr_in घोषित किया जाता है लेकिन शायद किसी को यहाँ इसलिए मुझे बाहर करने में मदद करेगा!

यहाँ मैं अब तक (एक के लिए एक आईपी करने के लिए स्ट्रिंग रूप में एक आईपी परिवर्तित करने का परीक्षण किया है 4 बाइट अभिन्न और इसके विपरीत):

#include <stdio.h> 
#include <sys/types.h> 
#include <sys/socket.h> 
#include <netdb.h> 

int main(void) 
{ 
    sockaddr_in sin; 

    inet_pton(AF_INET, "192.168.2.1", &sin.in_addr); 
    char ip[INET_ADDRSTRLEN]; 
    inet_ntop(AF_INET, &sin.in_addr, ip, INET_ADDRSTRLEN); 
    printf("%s\n", ip); 

    return 0; 
} 

फिर मैं, जहां सब कुछ तो है अगर यह कुछ मेरी ओर से वास्तव में बेवकूफ है के रूप में पूरी तरह से अनजान हूँ खेद

संपादित करें: मैं एक लिनक्स डेबियन पर हूँ मिंट कहा जाता है अगर मिंट कहा जाता है?

उत्तर

22

The standard का कहना है:

हैडर sockaddr_in संरचना को परिभाषित करेगा

आप <netinet/in.h> शामिल हैं और sin इस तरह की घोषणा करने के लिए है:

struct sockaddr_in sin; 
^^^^^^ 

पता लगाने के लिए तुम क्यों की जरूरत है struct कीवर्ड, यह C FAQ देखें। लंबी कहानी संक्षेप में, वहाँ ip(7) आदमी पृष्ठ के अनुसार कोई अंतर्निहित typedef सी

+0

कि मेरी मुख्य समस्या तय की जरूरत है! netinet/in.h - ध्यान दिया, धन्यवाद! s_addr के बजाय in_addr डालने वाली दूसरी त्रुटि के बारे में कभी भी नहीं: पी – user1169094

4

में है, तो आप भी

#include <sys/socket.h> 
    #include <netinet/in.h> 
    #include <netinet/ip.h> 
+0

अधिकांश विवरण पढ़ें और इसे बहुत कुछ समझ में नहीं आया है, लेकिन मैं निश्चित रूप से इस तरह की साधारण सामग्री पर भावी संदर्भ के लिए उन मैन पेजों का उपयोग करूंगा। धन्यवाद! – user1169094

संबंधित मुद्दे