5. Basics of Sockets

5. Basics of Sockets

Till now, you must have gained the basic idea about networking and python. If you have missed the last few tutorials, we advice you to go through them, before starting with sockets. Now the real fun begins when we start to mix these things up. So, let's get started with sockets and see what they are and why we use them.
To understand what sockets are, let's start with the Internet Connection. The Internet Connection basically connects two points across the internet for data sharing and other stuff. One process from computer C1 can communicate to a process from computer C2, over an internet connection. It has following properties:
  • Reliable: It means until the cables connecting two computers are safe, data will be transfered safely.
  • Point-to-Point: Connection is established between 2 points.
  • Full-Duplex: It means transfer of information can occur in both ways i.e. from client to server as well as server to client simultaneously(at the same time).
Sockets are the endpoints of a bidirectional, point-to-point communication channel. Given an internet connection, say between client(a browser) and the server(say studytonight.com), we will have two sockets. A Client Socket and a Server Socket.
Socket acts on two parts: IP Address + Port Number

Vaguely speaking, when you clicked on the link that brought you to Studytonight website, your browser did something like the following:
 
    #a socket object is created for communication
    clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # now connect to the web server on port 80
    # - the normal http port
    clientsocket.connect(("www.studytonight.com", 80))
This happened on the client side. When the client tries to connect with the server, a random port is assigned by the operating system for the connection. This random port is called Ephermal Port. In the above illustration, 1300 is an ephermal port on the source(client) machine. The client socket is short lived, i.e as soon as the data exchange ends it closes. Now what happens on server is a bit different from client. So,let's see:
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    #bind the socket to a public host and a well-known port
    serversocket.bind((socket.gethostname(), 80))
    
    #become a server socket and listen for connections
    serversocket.listen(5)
For now, just focus on Connect and Bind methods.
Connect is used by the client socket to start a connection with the server. This request is fulfilled by bind method of the server socket. If you are having problem with the code, don't worry. Every bit of it will be explained separately with examples.
Before concluding, let's see some differences between the client and the server sockets:
  • Unlike client sockets, server sockets are not short lived. For example: you might need youtube.com for a single request but youtube.com has to be up 24*7 for any request which it might receive from users across the globe.
  • Unlike client socket which uses Ephermal Port for connection, server socket requires a standard or well defined port for connection like: Port 80 for Normal HTTP Connection, Port 23 for Telnet etc.
# Table of Contents:
28. Changing User Agent

# Ebooks for Network Programming with Python



Categories

[ Video ] CNC Programming (2) [Apps] F# Programming Tutorial (1) 100 ebooks for engineers (2) 2048 GAME (1) AC Circuits (1) AC Circuits Tutorial (1) AC Circuits Tutorials (2) Accounting Basics (1) Activities Manual to accompany Programmable Logic Controllers (1) Adeept Ultimate Starter Kit for Arduino (1) Adobe Photoshop CC (1) Advanced Business Application Programming (1) Advanced Excel Charts Tutorial (1) Alarm (1) Amazon App store (165) amazon ebook (86) Amazon Web Services (1) Amazon Web Services Tutorials (1) Amplifiers (1) Amplifiers tutorial (3) and Design (2) android game (17) Animal Connect (1) Apache Flume Tutorial (1) Apache Kafka Tutorial (1) Apache Pig Tutorial (1) Apache Solr Tutorial (1) Apache Storm Tutorial (1) Apex Programming (2) App Android (157) Apple Books (3) Applications (8) Applied Petroleum Reservoir Engineering (1) Apps (197) Apps Android (15) appstore (14) Appstore For Android (1) Arduino (1) Artificial Intelligence (1) Assembly Code Examples (1) Assembly Programming (2) Assembly Programming Tutorial (2) Attenuators Tutorial (2) Attract Wealth Hypnosis PRO (1) AutoCAD For Dummies (1) AutoCAD Tutorial (1) Awk Programming Tutorial (1) AWS (1) BABY LEARN TO ALPHABET (1) Basic Electricity (1) Basic Electronics (1) Basics of Mechanical Engineering (1) Beetle Run (1) Best Apps (52) Best Apps Android 2017 (6) Best games (19) Big Data Analytics with R (1) Binary Numbers (1) Binary Numbers Tutorial (1) Block Puzzle (1) Body Language (1) Boiler House (1) Books list for engineer (1) Boolean Algebra (1) Boolean Algebra Tutorial (6) Boost Your Productivity Quickly (1) Bottle Shooting (1) Build Your Own CNC Machine (Technology in Action) (1) Business Negotiation Skills (2) C Programming (1) C Programming Code Examples (1) C Programming Langguage (1) C Standard Library (2) C# (1) C# programming Examples (1) C# Tutorial (1) C++ Primer (1) C++ Programming (1) C++ Programming Standard Library (1) C++ Programming Tutorial FULL (1) C++ Tutorial (1) Catch Duck (1) Caveman Run (1) Clean Architecture (1) Clojure Programming Tutorial (1) CNC Books (42) CNC Control Setup for Milling and Turning (1) CNC G-Code (9) CNC G-Code tutorial (4) CNC Lathe Machine Programming (1) CNC M-Code Tutorial (2) CNC Machine Tutorial (7) CNC Milling Machine CNC Program Examples (4) CNC programming (60) CNC Programming Basics (7) CNC Programming Examples (40) CNC Programming Handbook (2) CNC Programming Reference (1) CNC Programming using Fanuc Custom Macro B (1) CNC Programming: Basics & Tutorial Textbook (1) CNC Tips (4) COBOL Programming (2) Code Examples (1) Compass (1) Complete Electronics Self-Teaching Guide with Projects (1) Computer Fundamentals (1) Computer programming (1) Computer programming ebooks (1) Control Theory Tutorial (1) CouchDB Tutorial (1) Critical Thinking (1) Crystal Reports (1) Csharp (1) Dart Programming Language (1) Dart Programming Tutorial (1) Delft Pneumatic Bipeds (1) Demon Jump (1) Digital Signal Processing (1) Diodes (1) DISCOVER THE SCIENCE AND TECHNOLOGY OF THE FUTURE (1) Drill CNC (1) Drilling CNC Program (1) ebook (81) ebook kindle amazon (66) ebook Kobo (15) eBooks (187) Elasticsearch Tutorial (1) Electrical Transformers And Rotating Machines (1) Electricity and Magnetism (1) Electromagnetism (1) Electronic Systems (1) Electronic Transformers (1) Electronics DC Circuit (1) Electronics Filters (1) Electronics from the Ground Up (1) Electronics Inductors (1) Electronics Oscillator (1) Electronics Resistors (1) Elenco AM/FM Radio Kit (Combines ICs & Transistors) (1) Elenco Practical Soldering Project Kit (1) Elixir Language (1) Elixir Tutorial (1) Embedded Systems (1) Embedded systems C++ programming Tutorial (3) Embedded Systems Tutorial (1) Erlang Programming (1) Erlang Programming Tutorial (1) Euphoria Programming Language (1) Excel Formulas and Functions (1) Excel Functions & Formulas (1) Excel VBA (1) F# Programming (1) Facebook Advertising For Dummies (1) Facebook Marketing (1) Final Mission Game (1) Flag Game (1) Fortran Programming Tutorial (1) Funny jokes (1) Fuzzy Logic Tutorial (1) G-Code and M-Code (1) G-Code Reference (1) G-Code Tutorials (1) Games (18) Getting Started with 3D Printing (1) Go Programming Language (1) GOLD MINER+ (1) Good book about President Trump * Donald Trump Books * (1) Groovy Tutorial (1) Guide To 3D Printing (2) Guide To Accounting Basics (1) Guide to Amazon Marketplace (1) Guide To Anger Management (1) Guide To Arduino (2) Guide To Artificial Intelligence (1) Guide To Artificial Neural Networks (1) Guide To Assertiveness (1) Guide To AWS (2) Guide To Basic Electronics (1) Guide To Bitcoin (1) Guide To Business Negotiation Skills (1) Guide To Business Writing Skills (1) Guide To CNC Programming (2) Guide To Critical Thinking (1) Guide To Digital Circuits (1) Guide To Digital Electronics (1) Guide To Food and Beverages Services (1) Guide to Java Persistence API (1) Guide To Java XML (1) Guide To Java.io package (1) Guide To jMeter (1) Guide To JPA (1) Guide To JSoup (1) Guide To Make money online (1) Guide To MS Project (1) Guide To Neo4j (1) Guide To Photoshop (1) Guide to Pinterest Marketing (1) Guide To PyQt (1) Guide To Python (3) Guide To Rust Programming (2) Guide To SAP BODS (1) Guide To SAP BW on HANA (1) Guide to Snapchat (1) Guide To Solidworks (2) Guide To Spring Web Services (1) Guide To Struts 2 (1) Guide To SWING (1) Guide To T-SQL (1) Guide To Tcl- Tk (1) Guide To TestNG (1) Guide To Wireless Communication (1) Guide To WordPress (1) Guide To Xamarin (1) Guide To XPath (1) Guide To XSLT (1) Handbook of Natural Gas Transmission and Processing (1) Harmony - Hypnosis Meditation (1) Haskell Programming (1) Hibernate Tutorial (1) Hostinger Tutorials (1) How to Learn Microsoft Access VBA Programming Quickly (1) How to learn Microsoft Office Powerpoint Quickly! (2) How To R Programming (2) How to Use Snapchat (1) ibooks (3) Inter Process Communication (IPC) (1) Internet of Things Tutorial (1) Introducing Arduino (1) Introducing AWK (1) Introducing Boiler House (1) Introducing Clojure (2) Introducing Hibernate (1) Introducing Neo4j (1) Introducing OBIEE (1) Introducing RC Networks (1) Introducing SAP MM (1) Introducing SAP Payroll (1) Introducing Transistors (1) Introducing XPath (1) Introducing XSLT (1) Introduction to Cgi/Perl (1) Java 8 (1) JavaFX tutorial (2) JCL Tutorial (1) Job Control Language (1) Joyo ZOMBIE 20 Watt Mini Tube Head in new banTamp Series New and Nice! (1) JSP Tutorial (1) Jump and Fly (1) Jumping Penguin (1) KDB (1) KDB+ Tutorial (1) Kill Zombies Game (1) Kindle Amazon (3) Kindle Books (3) kindle ebook (19) kit (3) Lathe CNC (1) Learn C++ Standard Library (1) Learn Apache Spark (1) Learn Apache Tajo (1) Learn Apex Programming (1) Learn Avro (1) Learn Basics of Computers (1) Learn Big Data (1) Learn C Programming (1) Learn Cassandra (1) Learn COBOL (1) Learn Computer Programming (1) Learn Crystal Reports (1) Learn D Programming (1) Learn Data Mining (1) Learn Data Structure and Algorithms (1) Learn Database Management System (1) Learn Digital Image Processing (1) Learn Diodes (1) Learn Electronics (1) Learn Electronics and Digital Electronics by GoLearningBus (1) Learn Electronics with Arduino (1) Learn Euphoria (1) Learn Food Production Operations (1) Learn Genetic Algorithms (1) Learn Go Programming (1) Learn Haskell Programming (1) Learn How to Make Money with a Success Mindset (1) Learn Interpersonal skills (1) Learn Java.langPackage (1) Learn Java.util package (1) Learn LISP (1) Learn Objective-C on the Mac (1) Learn RC Networks (1) Learn SAP ABAP (1) Learn SAP Payroll (1) Learn Scala Programming (1) Learn Scripts (1) Learn Social Intelligence (1) Learn Social Media Marketing (1) Learn Swift (1) Learn VB.net By Examples (1) Learn Windows 10 (1) Learning Perl (1) Lignocellulose Biorefinery Engineering: Principles and Applications (1) LISP Programming Language (1) Logic Gates (1) Logic tutorials (1) Logo Programming (1) Logo programming language (1) LOLCODE Programming Language (1) Make Money Online Tutorial (1) Make: Electronics: Learning Through Discovery (1) Mastering Node.js (1) MathTeX: LaTeX Mathematics (1) MATLAB for Beginners (1) Microsoft Project Standard 2016 (1) MILLIONAIRE FREE (1) Miscellaneous Circuits (1) MongoDB (1) MongoDB Tutorial (1) Move The Fruit (1) MySQL (1) MySQL Tutorial (2) NAO robot course (1) Network Programming with Python (1) Node.js (1) NumPy Tutorial (1) OAuth 2.0 (1) OAuth 2.0 Tutorial (1) OBIEE Tutorial (1) Objective-C Programming Language (1) Operational Amplifiers (1) Parrot Programming (1) Parrot Programming Tutorial (1) PHP 7 Tutorial (1) Pipe Drafting and Design (1) PL/SQL Tutorial (1) Power Electronics (1) Power Electronics: Converters (2) Power Supplies (1) Programming Groovy (1) Programming of CNC Machines (2) Programming Rust: Fast (1) Programming with MATLAB for Beginners (1) Python (2) Python 3 Tutorial (2) Python Pandas Tutorial (1) Python Programming For Beginners (1) Python Tutorial (2) R Programming (2) R Programming Examples (1) Reasoning Web. Semantic Interoperability on the Web (1) Reference books ICT (1) Report Studio Developer (1) Rexx Tutorial (1) Robot Programming (1) robotics tutorials (1) RoutCad de Luxe CAD-CAM Software CNC Mill (1) Rust Programming (1) Rust Programming Tutorial (1) Safe Systems Development (1) Safety Valve (1) Salesforce Tutorial (1) SAP Advanced Planning and Optimization (1) SAP Basis Tutorial (1) SAP BO Analysis Edition For OLAP (1) SAP Business Explorer (1) SAP Business Planning and Consolidation (1) SAP Business Workflow (1) SAP BW on HANA (1) SAP MM - Tutorial (1) SAP_GRC Tutorial (1) Schaum's Outline of Basic Circuit Analysis (1) Script Programming Tutorials (1) Scripts (1) Sematic web (1) Sequential Logic (1) Sign Language ASL | BSL (1) Sinusoidal Oscillators and Waveform Generators (1) SnapChat (1) Snapchat Tutorials (1) Socket.IO Tutorial (1) Software (3) Solidworks tutorials (2) SOLISWORKS (2) SOLISWORKS ebooks (1) SOLISWORKS Tutorials (2) Spring Batch Tutorial (1) Spring Framework (1) Spring MVC Tutorial (1) Spring Tutorial (1) SQL Fundamentals Certification tutorial (1) STATUS AND QUOTES (1) Steam Engineering Principles and Heat Transfer (1) Steam trapping and air venting (1) TestNG Tutorial (1) The Best Apps for Tutorials (1) The best Kindle (1) The CNC Cookbook (1) The complete guide to Arduino for beginners (1) The Essential Guide to Digital Signal Processing (1) Third Edition (1) Tips (33) Tips and Tricks (3) Tips for CNC Users (33) Top 10 best sellers on the Amazon Kindle (1) Turtle Run and Jumper (1) Tutorials (312) Understanding Hot Water Heating Systems (1) VB.Net Programming Tutorial (1) VBA Tutorial (1) Video (1) Waveform Generators (1) Ways To Make Money - Work At Home (1) WordPress Tutorial (1) Write DAX (1) Xamarin Tutorial (1) XML (1) XML Technologies (1) XML Technologies Tutorial (1) YouTube Marketing (1)