Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8513149
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 11, 20262026-06-11T04:28:32+00:00 2026-06-11T04:28:32+00:00

Reading the MSDN page, it is clear that Send will block if there are

  • 0

  Reading the MSDN page, it is clear that Send will block if there are no internal buffers in the socket transport layer.  This is actually a good thing, because I’d rather not have a NoBufferSpaceAvailable error.  My understanding is that the transport buffer space is quite large, but if Send throttles things to prevent these errors I’m happy.

However, is NOT clear what else will cause Send to block.  My guess is that it DOES NOT block waiting for the ack of the send, and that Send will just queue the data to the transport buffers and return. 

What would be a VERY BAD thing is that if a Send really does block until a specific socket actually has completely blocked until transmission completion.  If that were the case then one slow connection out of 1000 could slow down the entire sending process.  In that case SendAsync would really be mandatory.

Anyone have any more details on this?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-11T04:28:34+00:00Added an answer on June 11, 2026 at 4:28 am

    As EJP says, the send buffers take care of any un-ACKed data, which is to say that any data you send will stay in the buffers until it is ACKed by the receiver. This is to allow for data to be resent later, in the case that an ACK never arrives for a packet.

    Also, as EJP says, whenever an ACK is received, the data that was just ACKed is then removed from the send buffer and the space freed up so you can use it for further sends.

    However, in the case of sending large amounts of data, and ACKs being slow to come back (due to high latency, a noisy connection or simply a disconnection along the way), then the send buffers will get filled up and will eventually result in a send blocking due to a lack of send buffer space.

    So un-ACKed data will not itself directly cause a send to block, but if you send large amounts of data and there are network issues that mean that ACKs are not get back to you, then yes … un-ACKed data will eventually cause sends to block. And this is correct behaviour.

    You would not want to keep sending data for ever, without receiving an ACK. If you did want that, then you would probably be using UDP instead of TCP 🙂

    EDIT: Also, it’s not uncommon to use one thread per connection, to avoid the specific case you mention where one bad connection can affect a thousand. And if you are worried about scaling, you probably should be using asynchronous calls anyway.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Reading the MSDN documentation for Socket.AcceptAsync I am still not entirely clear if there
I have been reading this page here from MSDN regarding the XOR operator and
I'm reading through some MSDN example code on Composite controls and finding that there
Reading through this MSDN article http://msdn.microsoft.com/en-us/library/dd460648.aspx I'm seeing a claim that MEF doesn't have
I was reading over the documentation for query hints: http://msdn.microsoft.com/en-us/library/ms181714(SQL.90).aspx And noticed this: FAST
So , I've been reading this article: http://msdn.microsoft.com/en-us/library/aa290051%28VS.71%29.aspx And I would like to define
Reading the MCIMX50 Application Processor Reference Manuals on page 1368 (Section 33.3) there is
Reading the Scala by Example book and there is this example when Martin explains
Reading this MSDN article titled Working with ObjectSet (Entity Framework) It shows two examples
Just reading through the MSDN page about new .NET 4.0 feature SpinLock and can

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.