Reader small image

You're reading from  Hands-On Network Programming with C

Product typeBook
Published inMay 2019
Reading LevelIntermediate
PublisherPackt
ISBN-139781789349863
Edition1st Edition
Languages
Concepts
Right arrow
Author (1)
Lewis Van Winkle
Lewis Van Winkle
author image
Lewis Van Winkle

Lewis Van Winkle is a software programming consultant, entrepreneur, and founder of a successful IoT company. He has over 20 years of programming experience after publishing his first successful software product at age 12. He has over 15 years of programming experience with the C programming language on a variety of operating systems and platforms. He is active in the open-source community and has published several popular open-source programs and librariesmany of them in C. Today, Lewis spends much of his time consulting, where he loves taking on difficult projects that other programmers have given up on. He specializes in network systems, financial systems, machine learning, and interoperation between different programming languages.
Read more about Lewis Van Winkle

Right arrow

Blocking on send()


When we call send() with an amount of data, send() first copies this data into an outgoing buffer provided by the operating system. If we call send() when its outgoing buffer is already full, it blocks until its buffer has emptied enough to accept more of our data.

In some cases where send() would block, it instead returns without copying all of the data as requested. In this case, the return value of send() indicates how many bytes were actually copied. One example of this is if your program is blocking on send() and then receives a signal from the operating system. In these cases, it is up to the caller to try again with any remaining data.

In this chapter's TCP server code section, we ignored the possibility that send() could block or be interrupted. In a fully robust application, what we need to do is compare the return value from send() with the number of bytes that we tried to send. If the number of bytes actually sent is less than requested, we should use select(...

lock icon
The rest of the page is locked
Previous PageNext Page
You have been reading a chapter from
Hands-On Network Programming with C
Published in: May 2019Publisher: PacktISBN-13: 9781789349863

Author (1)

author image
Lewis Van Winkle

Lewis Van Winkle is a software programming consultant, entrepreneur, and founder of a successful IoT company. He has over 20 years of programming experience after publishing his first successful software product at age 12. He has over 15 years of programming experience with the C programming language on a variety of operating systems and platforms. He is active in the open-source community and has published several popular open-source programs and librariesmany of them in C. Today, Lewis spends much of his time consulting, where he loves taking on difficult projects that other programmers have given up on. He specializes in network systems, financial systems, machine learning, and interoperation between different programming languages.
Read more about Lewis Van Winkle