मुझे कौन सा पसंद करना चाहिए?
पूर्व और बाद वाले दोनों अपने आंतरिक Socket
प्राप्त समय समाप्ति पर सेट करेंगे। उसी सॉकेट TcpClient
से NetworkStream
पर बबल होगा, इसलिए मैं पूर्व के साथ जाऊंगा।
क्या वे प्रभावशीलता के मामले में समान हैं या किस तरह से वे भिन्न हैं?
यह अच्छी बात है कि हम source code देख सकते हैं। यह TcpClient.ReceiveTimeout
है:
public int ReceiveTimeout
{
get
{
return numericOption(SocketOptionLevel.Socket,
SocketOptionName.ReceiveTimeout);
}
set
{
Client.SetSocketOption(SocketOptionLevel.Socket,
SocketOptionName.ReceiveTimeout, value);
}
}
कौन सा अफसर ग्राहक सॉकेट का समय समाप्त प्राप्त (Client
प्रकार Socket
की है) तय करता है। और फिर NetworkStream
के लिए पारित:
public NetworkStream GetStream()
{
// Shortened for brevity
if (m_DataStream==null)
{
m_DataStream = new NetworkStream(Client, true);
}
return m_DataStream;
}
और जब NetworkStream
टाइमआउट के लिए लग रहा है, यह Socket
अंदर दिखता है:
public override int ReadTimeout
{
get
{
int timeout = (int)m_StreamSocket.GetSocketOption(SocketOptionLevel.Socket,
SocketOptionName.ReceiveTimeout);
if (timeout == 0)
{
return -1;
}
}
return timeout;
}
स्रोत
2015-05-22 07:28:03
यह समझ में आता है। आपके उत्तर के लिए धन्यवाद। –
@DioF आपका स्वागत है। –