Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletter Hub
Free Learning
Arrow right icon
Python Network Programming Cookbook
Python Network Programming Cookbook

Python Network Programming Cookbook: Practical solutions to overcome real-world networking challenges , Second Edition

Arrow left icon
Profile Icon Pradeeban Kathiravelu Profile Icon Gary Berger Profile Icon Dr. M. O. Faruque Sarker
Arrow right icon
$9.99 $43.99
Full star icon Full star icon Full star icon Half star icon Empty star icon 3.5 (4 Ratings)
eBook Aug 2017 450 pages 2nd Edition
eBook
$9.99 $43.99
Paperback
$54.99
Subscription
Free Trial
Renews at $19.99p/m
Arrow left icon
Profile Icon Pradeeban Kathiravelu Profile Icon Gary Berger Profile Icon Dr. M. O. Faruque Sarker
Arrow right icon
$9.99 $43.99
Full star icon Full star icon Full star icon Half star icon Empty star icon 3.5 (4 Ratings)
eBook Aug 2017 450 pages 2nd Edition
eBook
$9.99 $43.99
Paperback
$54.99
Subscription
Free Trial
Renews at $19.99p/m
eBook
$9.99 $43.99
Paperback
$54.99
Subscription
Free Trial
Renews at $19.99p/m

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Table of content icon View table of contents Preview book icon Preview Book

Python Network Programming Cookbook

Multiplexing Socket I/O for Better Performance

In this chapter, we will cover the following recipes:

  • Using ForkingMixIn in your socket server applications
  • Using ThreadingMixIn in your socket server applications
  • Writing a chat server using select.select
  • Multiplexing a web server using select.epoll
  • Multiplexing an echo server using Diesel concurrent library

Introduction

This chapter focuses on improving the socket server performance using a few useful techniques. Unlike the previous chapter, here we consider multiple clients that will be connected to the server and the communication can be asynchronous. The server does not need to process the request from clients in a blocking manner; this can be done independently of each other. If one client takes more time to receive or process data, the server does not need to wait for that. It can talk to other clients using separate threads or processes.

In this chapter, we will also explore the select module that provides the platform-specific I/O monitoring functions. This module is built on top of the select system call of the underlying operating system's kernel. For Linux, the manual page is located at http://man7.org/linux/man-pages/man2/select.2.html and can be checked to see the...

Using ForkingMixIn in your socket server applications

You have decided to write an asynchronous Python socket server application. The server will not block in processing a client request. So the server needs a mechanism to deal with each client independently.

Python SocketServer class comes with two utility classes: ForkingMixIn and ThreadingMixIn. The ForkingMixIn class will spawn a new process for each client request. This class is discussed in this section. The ThreadingMixIn class will be discussed in the next section. For more information, you can refer to the relevant Python 2 documentation at http://docs.python.org/2/library/socketserver.html and Python 3 documentation at https://docs.python.org/3/library/socketserver.html.

How to do it...

...

Using ThreadingMixIn in your socket server applications

Perhaps you prefer writing a multi-threaded application over a process-based one due to any particular reason, for example, sharing the states of that application across threads, avoiding the complexity of inter-process communication, or something else. In such a situation, if you want to write an asynchronous network server using SocketServer library, you will need ThreadingMixIn.

Getting ready

By making a few minor changes to our previous recipe, you can get a working version of socket server using ThreadingMixIn.

How to do it...

...

Writing a chat server using select.select

Launching a separate thread or process per client may not be viable in any larger network server application where several hundred or thousand clients are concurrently connected to the server. Due to the limited available memory and host CPU power, we need a better technique to deal with a large number of clients. Fortunately, Python provides the select module to overcome this problem.

How to do it...

We need to write an efficient chat server that can handle several hundred or a large number of client connections. We will use the select() method from the select module that will enable our chat server and client to do any task without blocking a send or receive a call all the time.

...

Multiplexing a web server using select.epoll

Python's select module has a few platform-specific, networking event management functions. On a Linux machine, epoll is available. This will utilize the operating system kernel that will poll network events and let our script know whenever something happens. This sounds more efficient than the previously mentioned select.select approach.

How to do it...

Let's write a simple web server that can return a single line of text to any connected web browser.

The core idea is during the initialization of this web server, we should make a call to select.epoll() and register our server's file descriptor for event notifications. In the web server's executive code, the socket...

Multiplexing an echo server using Diesel concurrent library

Sometimes you need to write a large custom networking application that wants to avoid repeated server initialization code that creates a socket, binds to an address, listens, and handles basic errors. There are numerous Python networking libraries out there to help you remove boiler-plate code. Here, we can examine such a library called Diesel.

Getting ready

Diesel uses a non-blocking technique with co-routines to write networking severs efficiently. As stated on the website, Diesel's core is a tight event loop that uses epoll to deliver nearly flat performance out to 10,000 connections and beyond. Here, we introduce Diesel with a simple echo server. You also...

Left arrow icon Right arrow icon

Key benefits

  • ?Solve real-world tasks in the area of network programming, system/networking administration, network monitoring, and more.
  • ?Familiarize yourself with the fundamentals and functionalities of SDN
  • ?Improve your skills to become the next-gen network engineer by learning the various facets of Python programming

Description

Python Network Programming Cookbook - Second Edition highlights the major aspects of network programming in Python, starting from writing simple networking clients to developing and deploying complex Software-Defined Networking (SDN) and Network Functions Virtualization (NFV) systems. It creates the building blocks for many practical web and networking applications that rely on various networking protocols. It presents the power and beauty of Python to solve numerous real-world tasks in the area of network programming, network and system administration, network monitoring, and web-application development. In this edition, you will also be introduced to network modelling to build your own cloud network. You will learn about the concepts and fundamentals of SDN and then extend your network with Mininet. Next, you’ll find recipes on Authentication, Authorization, and Accounting (AAA) and open and proprietary SDN approaches and frameworks. You will also learn to configure the Linux Foundation networking ecosystem and deploy and automate your networks with Python in the cloud and the Internet scale. By the end of this book, you will be able to analyze your network security vulnerabilities using advanced network packet capture and analysis techniques.

Who is this book for?

This book is for network engineers, system/network administrators, network programmers, and even web application developers who want to solve everyday network-related problems. If you are a novice, you will develop an understanding of the concepts as you progress with this book.

What you will learn

  • • Develop TCP/IP networking client/server applications
  • • Administer local machines IPv4/IPv6 network interfaces
  • • Write multi-purpose efficient web clients for HTTP and HTTPS protocols
  • • Perform remote system administration tasks over Telnet and SSH connections
  • • Interact with popular websites via web services such as XML-RPC, SOAP, and REST APIs
  • • Monitor and analyze major common network security vulnerabilities
  • • Develop Software-Defined Networks with Ryu, OpenDaylight, Floodlight, ONOS, and POX Controllers
  • • Emulate simple and complex networks with Mininet and its extensions for network and systems emulations
  • • Learn to configure and build network systems and Virtual Network Functions (VNF) in heterogeneous deployment environments
  • • Explore various Python modules to program the Internet

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Aug 09, 2017
Length: 450 pages
Edition : 2nd
Language : English
ISBN-13 : 9781786468475
Languages :
Concepts :

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Product Details

Publication date : Aug 09, 2017
Length: 450 pages
Edition : 2nd
Language : English
ISBN-13 : 9781786468475
Languages :
Concepts :

Packt Subscriptions

See our plans and pricing
Modal Close icon
$19.99 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
$199.99 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just $5 each
Feature tick icon Exclusive print discounts
$279.99 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just $5 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total $ 164.97
Python GUI Programming Cookbook, Second Edition
$54.99
Mastering Python Networking
$54.99
Python Network Programming Cookbook
$54.99
Total $ 164.97 Stars icon
Banner background image

Table of Contents

14 Chapters
Sockets, IPv4, and Simple Client/Server Programming Chevron down icon Chevron up icon
Multiplexing Socket I/O for Better Performance Chevron down icon Chevron up icon
IPv6, Unix Domain Sockets, and Network Interfaces Chevron down icon Chevron up icon
Programming with HTTP for the Internet Chevron down icon Chevron up icon
Email Protocols, FTP, and CGI Programming Chevron down icon Chevron up icon
Programming Across Machine Boundaries Chevron down icon Chevron up icon
Working with Web Services – XML-RPC, SOAP, and REST Chevron down icon Chevron up icon
Network Monitoring and Security Chevron down icon Chevron up icon
Network Modeling Chevron down icon Chevron up icon
Getting Started with SDN Chevron down icon Chevron up icon
Authentication, Authorization, and Accounting (AAA) Chevron down icon Chevron up icon
Open and Proprietary Networking Solutions Chevron down icon Chevron up icon
NFV and Orchestration – A Larger Ecosystem Chevron down icon Chevron up icon
Programming the Internet Chevron down icon Chevron up icon

Customer reviews

Rating distribution
Full star icon Full star icon Full star icon Half star icon Empty star icon 3.5
(4 Ratings)
5 star 50%
4 star 0%
3 star 0%
2 star 50%
1 star 0%
ian rust Nov 07, 2021
Full star icon Full star icon Full star icon Full star icon Full star icon 5
Have you ever read a networking textbook? Do you remember all the interesting protocols, SDN systems, network modeling, etc. that was discussed but which you never go to work with? Just kind of read about it and moved on?This is the first cookbook I found in any language that gives such a broad survey of networking. Why that is I don't really know. But show me a cookbook that covers all these topics:multiplexing servers, IPv6, UNIX domain sockets, network interfaces, FTP, CGI, POP3, IMAP, big/little Endian, advanced use of sockets, SMTP, remote shell scripting, SOAP, REST, XML-RPC, network modeling, Mininet, SDN, VMware, BGPThere's alot more advanced stuff I didn't mentionI see people complaining about the initial script. Well... I'd like to point out that the first script runs in Python2. It said run it in Python3, yes this was a mistake but it isn't something anyone that knows python should have any difficulty noticing. I didn't buy the book to complain, I bought it to learn something, and I learned alot from this book.It could have been written better, but the weird fact this sort of material is so hard to find cookbooks on, combined with the fact it's just basic information, is why I have given it 5 stars.
Amazon Verified review Amazon
Blu Wall Tech May 31, 2019
Full star icon Full star icon Full star icon Full star icon Full star icon 5
A lot of the time, you get trapped in the python's ecosystem of network-made-simple tools without any thought. Looking at things from a more broad perspective is always welcome for both teaching and practical purposes.
Amazon Verified review Amazon
DNAunion Dec 26, 2017
Full star icon Full star icon Empty star icon Empty star icon Empty star icon 2
I'm getting sick of Packt books. In this one, the very first script is wrong: it left out parentheses and so an error occurs.Packt, a piece of advise: have someone half-way knowledgeable review your books before releasing them to the public.
Amazon Verified review Amazon
H. S. Bassi Feb 24, 2018
Full star icon Full star icon Empty star icon Empty star icon Empty star icon 2
first exercise does not work due to a bits of missing code:fyi: now not looking forward to other Packt pub books i bought due to this.import sockethost_name = socket.gethostname()ip_address = socket.gethostbyname(host_name)print"Host name: %s" %host_nameprint"ip address : %s" %ip_addresswith all these miss use of %s and % it makes so confusing how about making the code more cleaner so people can read it:here is a example of exercise 1.2 rewritten so its more easier to understand with out the fluf :)import socketremote_host = 'www.python.org'print("IP address of" + remote_host + socket.gethostbyname(remote_host))yes i removed the method "def" function as 1 this is not in a class and this code is only doing one function not many methods included in thisi also removed the "try" error handling module as there is no need for it as there is nothing to execute after should it failow and the %s have gone yes i removed the stringing crap out of the code as its confusing for people that want to understand how its working this method above makes it so much more cleaner for some one to read and understand on what the code is doing!PACKT pub please remove the fluf in your book no need for it. also try the exercises before publishing the books
Amazon Verified review Amazon
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

How do I buy and download an eBook? Chevron down icon Chevron up icon

Where there is an eBook version of a title available, you can buy it from the book details for that title. Add either the standalone eBook or the eBook and print book bundle to your shopping cart. Your eBook will show in your cart as a product on its own. After completing checkout and payment in the normal way, you will receive your receipt on the screen containing a link to a personalised PDF download file. This link will remain active for 30 days. You can download backup copies of the file by logging in to your account at any time.

If you already have Adobe reader installed, then clicking on the link will download and open the PDF file directly. If you don't, then save the PDF file on your machine and download the Reader to view it.

Please Note: Packt eBooks are non-returnable and non-refundable.

Packt eBook and Licensing When you buy an eBook from Packt Publishing, completing your purchase means you accept the terms of our licence agreement. Please read the full text of the agreement. In it we have tried to balance the need for the ebook to be usable for you the reader with our needs to protect the rights of us as Publishers and of our authors. In summary, the agreement says:

  • You may make copies of your eBook for your own use onto any machine
  • You may not pass copies of the eBook on to anyone else
How can I make a purchase on your website? Chevron down icon Chevron up icon

If you want to purchase a video course, eBook or Bundle (Print+eBook) please follow below steps:

  1. Register on our website using your email address and the password.
  2. Search for the title by name or ISBN using the search option.
  3. Select the title you want to purchase.
  4. Choose the format you wish to purchase the title in; if you order the Print Book, you get a free eBook copy of the same title. 
  5. Proceed with the checkout process (payment to be made using Credit Card, Debit Cart, or PayPal)
Where can I access support around an eBook? Chevron down icon Chevron up icon
  • If you experience a problem with using or installing Adobe Reader, the contact Adobe directly.
  • To view the errata for the book, see www.packtpub.com/support and view the pages for the title you have.
  • To view your account details or to download a new copy of the book go to www.packtpub.com/account
  • To contact us directly if a problem is not resolved, use www.packtpub.com/contact-us
What eBook formats do Packt support? Chevron down icon Chevron up icon

Our eBooks are currently available in a variety of formats such as PDF and ePubs. In the future, this may well change with trends and development in technology, but please note that our PDFs are not Adobe eBook Reader format, which has greater restrictions on security.

You will need to use Adobe Reader v9 or later in order to read Packt's PDF eBooks.

What are the benefits of eBooks? Chevron down icon Chevron up icon
  • You can get the information you need immediately
  • You can easily take them with you on a laptop
  • You can download them an unlimited number of times
  • You can print them out
  • They are copy-paste enabled
  • They are searchable
  • There is no password protection
  • They are lower price than print
  • They save resources and space
What is an eBook? Chevron down icon Chevron up icon

Packt eBooks are a complete electronic version of the print edition, available in PDF and ePub formats. Every piece of content down to the page numbering is the same. Because we save the costs of printing and shipping the book to you, we are able to offer eBooks at a lower cost than print editions.

When you have purchased an eBook, simply login to your account and click on the link in Your Download Area. We recommend you saving the file to your hard drive before opening it.

For optimal viewing of our eBooks, we recommend you download and install the free Adobe Reader version 9.