Partager via


Simple .NET TCP Framing Example

Recently, Jon Cole from the System.Net QA team posted a great article in response to questions we've received on our .Net Networking Forum (https://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=40&SiteID=1).  His post can be found here:  https://blogs.msdn.com/joncole/archive/2006/03/20/555721.aspx

Excerpt from the article:

A common misunderstanding for developers new to network programming over TCP sockets is how messages are sent and received.  I frequently hear the statement that "my data is not arriving on the other side of the socket in the same format that I sent it."  The most common cause of this is because the TCP protocol does not guarantee that it will keep message boundaries.  In other words, you could send "Hello World" in a single call to Send(), but the other side of the socket stream may have to do multiple Receive() calls on the socket to get all of the data (the first Receive might return "he" and the second "llo world").  ........

-- Mike Flasko

Comments

  • Anonymous
    April 06, 2006
    Debugging the ASP.NET worker process running at
    100% [Via: scott@hanselman.com (Scott
    Hanselman)...
  • Anonymous
    April 08, 2006
    If you send "Hello World" and receive "he" + "llo world" then you have not a TCP socket.  For TCP one should have received "He" + "llo World". Please, pay attention when working with these,as some novices will understand really bad things