मैं अनुरोध के लिए बंदरगाह पर सुनने के लिए टीसीपी क्लाइंट का उपयोग कर रहा हूं। जब क्लाइंट से अनुरोध आते हैं तो मैं क्लाइंट आईपी को अनुरोध करने के बारे में जानना चाहता हूं।मैं टीसीपी क्लाइंट का उपयोग कर क्लाइंट आईपी पता कैसे प्राप्त करूं?
मैं कोशिश की है:
Console.WriteLine(tcpClient.Client.RemoteEndPoint.ToString());
Console.WriteLine(tcpClient.Client.LocalEndPoint.ToString());
var networkStream = tcpClient.GetStream();
var pi = networkStream.GetType().GetProperty("Socket", BindingFlags.NonPublic | BindingFlags.Instance);
var socketIp = ((Socket)pi.GetValue(networkStream, null)).RemoteEndPoint.ToString();
Console.WriteLine(socketIp);
इन पतों उत्पादन 10.x.x.x पतों जो निजी पते दिए गए हैं और स्पष्ट रूप से मेरे नेटवर्क अनुरोध कर बंद ग्राहकों के पते नहीं हैं सब के सब। अनुरोध करने वाले ग्राहकों के सार्वजनिक आईपी प्राप्त करने के लिए मैं क्या कर सकता हूं?
संपादित करें: हम टीसीपी अग्रेषण के साथ एक अमेज़ॅन ईसी 2 लोड बैलेंसर का उपयोग कर रहे हैं। क्या इस सेट में सही क्लाइंट आईपी प्राप्त करने का कोई तरीका है?
((IPEndPoint)tcpClient.Client.RemoteEndPoint).Address.ToString()
ग्राहक एक आंतरिक नेटवर्क के माध्यम से आप कनेक्ट कर रहा है, तो मुझे यकीन है कि तुम वापस ग्राहक के लिए प्राप्त करने के लिए है कि जानकारी की जरूरत नहीं होगी कनेक्शन के बाद से अपने सार्वजनिक आईपी प्राप्त कर सकते हैं नहीं कर रहा हूँ:
आप कैसे सुनिश्चित कर सकते हैं कि पते आपके नेटवर्क से ग्राहकों के "स्पष्ट" नहीं हैं। क्या आप कम से कम अपने ग्राहकों के आईपी रेंज को जानते हैं? क्या वे आपके आंतरिक नेटवर्क में रहते हैं, क्या वे सार्वजनिक इंटरनेट में रहते हैं? –
क्योंकि वे सभी 10 शुरू होते हैं। - यह एक निजी आईपी रेंज इंगित करता है जो सार्वजनिक आईपी पता नहीं है। http://en.wikipedia.org/wiki/Private_network – brendan