2012-12-15 21 views
5

निम्नलिखित परिदृश्य में;नेटवर्कस्ट्रीम। डेटा उपलब्ध बनाम टीसीपी क्लाइंट। उपलब्ध

System.Net.Sockets.TcpClient TC = SomeHowObtained; 
System.Net.Sockets.NetworkStream NS = TC.GetStream(); 

वहाँ NS.DataAvailable का उपयोग करने और TC.Available > 0 जाँच के बीच कोई अंतर है?

उत्तर

5

(डेटा का बाइट की संख्या नेटवर्क और उपलब्ध पढ़ने के लिए से प्राप्त) इस मामले में नहीं, कोई फर्क नहीं पड़ता। Socket.Available != 0 पर आंतरिक रूप से NS.DataAvailable सत्य लौटाता है। चूंकि TC.Available बस Socket.Available लौटें और आप जांच रहे हैं कि यह 0 से अधिक है या नहीं, तो आप मूल रूप से वही कर रहे हैं।

+1

वास्तव में [सी # .NET में TCPClient.cs स्रोत कोड] (http://www.dotnetframework.org/default.aspx/[email protected]/[email protected]/DEVDIV_TFS/Dev10/Releases/RTMRel/ndp/fx/ स्रोत/नेट/सिस्टम/नेट/सॉकेट/टीसीपी क्लाइंट @ सीएस/1305376/टीसीपी क्लाइंट @ सीएस) 'सार्वजनिक int उपलब्ध {पढ़ता है {वापसी m_ClientSocket.Available;}}' और [नेटवर्कस्ट्रीम सीएस स्रोत कोड सी # .NET] में पढ़ता है (http : //reflector.webtropy.com/default.aspx/[email protected]/[email protected]/DEVDIV_TFS/Dev10/Releases/RTMRel/ndp/fx/src/Net/System/Net/Sockets/[email protected]/1305376/NetworkStream @cs) 'वापसी chkStreamSocket.Available! = 0; 'पढ़ता है। –

2

MSDN से:

NetworkStream.DataAvailable

एक मूल्य है कि यह दर्शाता है कि डेटा पढ़ने के लिए NetworkStream पर उपलब्ध है हो जाता है।

TcpClient.Available

डेटा है कि नेटवर्क से प्राप्त किया गया है और पढ़ने के लिए उपलब्ध है की राशि हो जाता है।

NetworkStream.DataAvailable रिटर्न boolean, (सच पर धारा पढ़ने के लिए करता है, तो डेटा उपलब्ध है) TcpClient.Available रिटर्न Int32

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