मैं सेटबफर का उपयोग सॉकेटएसिंसेन्ट आर्ट्स के साथ ठीक कर सकता हूं।सॉकेटएसिंसेन्ट आर्ट्स के साथ बफरलिस्ट का उपयोग कैसे करें और सॉकेटएरर अमान्य अर्ग्यूमेंट प्राप्त नहीं करें?
यदि मैं बफरलिस्ट का उपयोग करने की कोशिश करता हूं (सेटबफर (शून्य, 0, 0) करने के बाद) मैं सॉकेट पर SendAsync करते समय हमेशा और तुरंत सॉकेट एरर अमान्य आर्ग्यूमेंट (10022) प्राप्त करता हूं।
बफरलिस्ट का उपयोग करने के तरीके और मेरे द्वारा किए जा रहे कार्यों पर कोई उदाहरण या दस्तावेज नहीं है (वैसे भी मेरे लिए)।
क्या कोई उदाहरण प्रोग्राम या कोड स्निपेट इंगित कर सकता है?
मैं इस पर मेरे बालों को फाड़ कर रहा हूँ और बहुत ज्यादा नहीं छोड़ दिया है है ...
यहाँ मैं (क्या कर रहा हूँ ई SocketAsyncEventArgs है मूल रूप से है और lSocket एक ही सॉकेट मैं SetBuffer के लिए उपयोग जो काम करता है)
// null the buffer since we will use a buffer list
e.SetBuffer(null, 0, 0);
// create a bufferlist
e.BufferList = new List<ArraySegment<byte>>();
// create the bufferlist with the network header and the response bytes
e.BufferList.Add(new ArraySegment<byte>(lTxBytes)); // add the 4 character total length
e.BufferList.Add(new ArraySegment<byte>(Encoding.ASCII.GetBytes(lTx.Identity))); // echo back the incoming sequence number
e.BufferList.Add(new ArraySegment<byte>(Encoding.ASCII.GetBytes(lResponse)));
// *** the SendAsync always completes IMMEDIATELY (returns false) gets SocketError InvalidArgument (10022)
if (lSocket.SendAsync(e) == false)
{
// data was already sent back to the client.
AppSupport.WriteLog(LogLevel.Flow, "ProcessReceive had SendAsync complete synchronously (bytes transferred {0}).", e.BytesTransferred);
ProcessSend(e);
}
यदि आप इसे इस्तेमाल करने वाली भाषा के साथ टैग करते हैं तो आपके पास अपने प्रश्न का उत्तर पाने का एक बेहतर मौका है। –
क्या सभी ArraySegments को एक ही भौतिक बाइट सरणी का हिस्सा बनने की आवश्यकता है? यदि ऐसा है, तो यह बफरलिस्ट को काफी बेकार प्रदान करेगा। क्या किसी ने बफरलिस्ट सफलतापूर्वक उपयोग किया है? – Dave
किसी के पास कोई विचार है? – Dave