2008-09-25 4 views
11

मैं प्रोग्रामेटिक रूप से कैसे निर्धारित कर सकता हूं कि मेरे पास सी # का उपयोग करके किसी दिए गए आईपी पते वाले सर्वर तक पहुंच है या नहीं?मैं सर्वर के आईपी पते को देखते हुए सी # के साथ किसी सर्वर से कनेक्शन का परीक्षण कैसे कर सकता हूं?

+2

कुछ स्पष्टीकरण आवश्यक है। "पहुंच" का क्या अर्थ है? क्या आप लक्ष्य मशीन पर किसी विशेष पोर्ट से कनेक्ट करने का प्रयास कर रहे हैं? – Luke

उत्तर

8

मान लिया जाये कि आप TCP सॉकेट के माध्यम से मतलब है:

IPAddress IP; 
if(IPAddress.TryParse("127.0.0.1",out IP)){ 
    Socket s = new Socket(AddressFamily.InterNetwork, 
    SocketType.Stream, 
    ProtocolType.Tcp); 

    try{ 
     s.Connect(IPs[0], port); 
    } 
    catch(Exception ex){ 
     // something went wrong 
    } 
} 

अधिक जानकारी के लिए: http://msdn.microsoft.com/en-us/library/4xzx2d41.aspx?ppud=4

+2

घोषणा पर बनाए गए आईपी का उदाहरण कभी भी उपयोग नहीं किया जाएगा क्योंकि इसे तुरंत आउट पैरामीटर के रूप में पारित किया जाता है, जिसे हमेशा बुलाए गए विधि के अंदर प्रतिस्थापित किया जाएगा। तो मैं तत्काल बाहर छोड़ दूंगा। लेकिन आप IP को बदलने के बिना नहीं कर सकते हैं। आईपीएड्रेस के लिए प्रयास करें। ट्राईपर्स (यह एक स्थिर विधि है)। तो मैं भी उसे बदल दूंगा। – user1132959

7

प्रचार स्ट्रिंग पते और int बंदरगाह और आप TcpClient वर्ग के माध्यम से कनेक्ट करने के लिए तैयार हैं।

System.Net.Sockets.TcpClient client = new TcpClient(); 
try 
{ 
    client.Connect(address, port); 
    Console.WriteLine("Connection open, host active"); 
} catch (SocketException ex) 
{ 
    Console.WriteLine("Connection could not be established due to: \n" + ex.Message); 
} 
finally 
{ 
    client.Close(); 
} 
-1

यह

bool ssl; 
ssl = false; 
int maxWaitMillisec; 
maxWaitMillisec = 20000; 
int port = 555; 

success = socket.Connect("Your ip address",port,ssl,maxWaitMillisec); 


if (success != true) { 

    MessageBox.Show(socket.LastErrorText); 
    return; 
} 
+3

आप सॉकेट को कहां परिभाषित करते हैं? यह कोड स्निपेट अपूर्ण है। – Mixxiphoid

16

आप पिंग वर्ग (.net 2.0 और ऊपर) इस्तेमाल कर सकते हैं

 
    Ping x = new Ping(); 
    PingReply reply = x.Send(IPAddress.Parse("127.0.0.1")); 

    if(reply.Status == IPStatus.Success) 
     Console.WriteLine("Address is accessible"); 

आप एक उत्पादन प्रणाली में asyunchronous तरीकों का उपयोग करने के लिए चाहते हो सकता है क्या करना चाहिए रद्द करने की अनुमति देने के लिए, आदि

+1

इसमें बहुत सारे अपवॉट हैं, लेकिन हर सर्वर पर काम नहीं करेंगे। मेरे लिए यह काम नहीं करेगा। http://security.stackexchange.com/questions/4440/security-risk-of-ping 'सार्वजनिक रूप से दृश्यमान सर्वर पर पिंग को अक्षम या अवरुद्ध करना आम बात है' – teynon