मैंने सीखा है कि टीसीपी कनेक्शन की पहचान टपल (स्रोत आईपी, स्रोत पोर्ट, गंतव्य आईपी, गंतव्य पोर्ट) द्वारा की जाती है। सैद्धांतिक रूप से, इस प्रकार host1 से एक क्लाइंट होना संभव है: port1 server1 से कनेक्ट करें: port1 और उसी समय host1 से एक अन्य क्लाइंट (host1 पर चल रहा है): port1 से server2: port1।
मैंने जावा में थोड़ा परीक्षण किया है, और अब तक यह संभव है।
हालाँकि, मैंने कई बार पढ़ा है कि स्रोत पोर्ट को होस्ट पते के लिए अद्वितीय होना चाहिए, जिसका मूल रूप से यह अर्थ होगा कि अधिकतम 65536 समवर्ती आउटगोइंग टीसीपी कनेक्शन की एक कठिन सीमा है। क्या यह सच है?
अपडेट: यहां मेरा जावा कोड है। यह काम करने लगता है, और netstat -t स्पष्ट रूप से पोर्ट 9990 (एक से 9997, एक से 9998 तक) से दो सक्रिय, आउटगोइंग कनेक्शन दिखाता है । कम से कम एक आधुनिक लिनक्स पर, यह संभव प्रतीत होता है?
Socket s1 = new Socket();
s1.setReuseAddress(true);
SocketAddress saremote = new InetSocketAddress("localhost",9999);
SocketAddress salocal = new InetSocketAddress("localhost",9990);
s1.bind(salocal);
s1.connect(saremote);
Socket s2 = new Socket();
s2.setReuseAddress(true);
SocketAddress saremote2 = new InetSocketAddress("localhost",9998);
SocketAddress salocal2 = new InetSocketAddress("localhost",9990);
s2.bind(salocal2);
s2.connect(saremote2);
और netstat -t आउटपुट (छोटा):
tcp6 0 0 localhost:9990 localhost:9998 CONNECTED
tcp6 0 0 localhost:9990 localhost:9999 CONNECTED