We may earn an affiliate commission when you visit our partners.
Michael Eramo

Have you ever wanted to build your own online multiplayer game that you and your friends could play?  How about wanting to build your own chat room like the golden AOL chat rooms from the 1990's that you and your friends could "hang out" it.  Want to learn the underlying principles of how programs like these work - how they can communicate and send data back and forth from one computer to the next over the internet?  If the answer is yes, then please consider taking this course.

Read more

Have you ever wanted to build your own online multiplayer game that you and your friends could play?  How about wanting to build your own chat room like the golden AOL chat rooms from the 1990's that you and your friends could "hang out" it.  Want to learn the underlying principles of how programs like these work - how they can communicate and send data back and forth from one computer to the next over the internet?  If the answer is yes, then please consider taking this course.

I know in my own journey with Python and computer science, once I got past the basics...the fundamentals...the whole "this is a for loop.  Can you print the first 100 even numbers?" type exercises, the doors really opened up.  There was only one problem:  the doors opened up to a HUGE space, with very little guidance.  Python is great because you can do so much with it, especially when you start to bring in new modules and libraries that give added functionality.  While there are ample beginner resources out there willing to hold your hand and guide you through the learning, I felt there were significantly less targeting this intermediate audience...The audience that has learned the basics and are now looking for something more...

In this course, I decided to focus my intermediate projects around networking applications; I wanted to write programs that could talk to each other online, both across my local area network and across the internet as a whole.  With this in mind, I asked myself what are some fun and engaging projects students would enjoy learning with and what external modules and libraries should we know to accomplish these projects.   In this course we will complete the following:

  • A two-way terminal based chat introducing the socket module

  • A terminal based chat room introducing the threading module

  • A GUI chat room introducing the Tkinter module

  • How to configure your router to allow communication from an external network

  • An advanced GUI chat room with admin window introducing the json/pickle modules

  • An online multiplayer game introducing the Pygame module

Each project builds on the knowledge gained during the previous projects.  In our culminating project, when we attempt to create our own online multiplayer game, we will be generating IPV4/TCP sockets to connect computers to a server running on a machine with a static IP and port forwarding enabled, creating various threads to run processes concurrently on our machines, we'll use json to serialize python objects such as our game state and game players, and have a full interactive GUI interface using Pygame.

By the end of this course you will have multiple projects you can share with friends or family, have them run a client script from their house, connect to your server script, and show off all you learned. 

Enroll now

What's inside

Learning objectives

  • Networking fundaments such as ip and port addresses, ipv4, tcp, and udp protocols.
  • How to set up your own home network with static ip addresses and port forwarding so anyone can connect to your programs over the internet.
  • How to use the socket module to create a basic two way chat in the terminal.
  • How to use the threading module to create a basic chat room in the terminal.
  • How to use tkinter module to make a gui chat room like the old aol chat rooms.
  • How to use the json module to create an advanced gui chat room with and admin window.
  • How to use the pygame module to make your own online multiplayer game.
  • Show more
  • Show less

Syllabus

Installation and Setup
Course Preview
Python Installation and Setup
VS Code Installation
Read more
Creating Our Working Directory
A Brief Overview of Networking Concepts
Creating TCP and UDP Connections with the Socket Module
Creating a TCP Server Socket
Creating a TCP Client Socket
Sending Data Through a TCP Connection
Creating and Sending Data Through a UDP Server/Client
Exploring the Buffer Size
Basic Two-Way Chat Part 1 - Server/Client Setup
Basic Two-Way Chat Part 2 - Enabling The Chat
Creating a Terminal Chat Room with the Threading Module
The Threading Module Basics Part 1
The Threading Module Basics Part 2
Terminal Chat Room Part 1 - Server/Client Setup
Terminal Chat Room Part 2 - Adding Functionality
Terminal Chat Room Part 3 - Adding Functionality
Terminal Chat Room Part 4 - Adding Functionality and Testing
Creating a Basic GUI Chat Room with the Tkinter Module
The Tkinter Module - Defining A Root Window
The Tkinter Module - Adding Frames
The Tkinter Module - Adding Widgets
The Tkinter - Module - Adding Functionality
Basic GUI Chat Room Part 1 - Building the Client Layout
Basic GUI Chat Room Part 2 - Building the Client Layout
Basic GUI Chat Room Part 3 - Adding Functionality
Basic GUI Chat Room Part 4 - Adding Functionality and Testing
Creating an Advanced GUI Chat Room with the Json Module
The Pickle Module - Sending Objects Through the Data Stream
The Json Module - Sending Objects Through the Data Stream
Advanced GUI Chat Room Part 1 - Updating the Client Layout
Advanced GUI Chat Room Part 2 - Building the Server Layout
Advanced GUI Chat Room Part 3 - Outlining Server Functionality
Advanced GUI Chat Room Part 4 - Outlining Client Functionality
Advanced GUI Chat Room Part 5 - Staring the Server
Advanced GUI Chat Room Part 6- Processing Messages Server Side
Advanced GUI Chat Room Part 7 - Starting the Client
Advanced GUI Chat Room Part 8 - Sending Data from Client to Server
Advanced GUI Chat Room Part 9 - Adding Admin Functionality
Advanced GUI Chat Room Part 10 - Adding Admin Functionality
Advanced GUI Chat Room Part 11 - Final Testing
Connecting to the Outside World
Adjusting Host Firewall for LAN Communication
Setting a Static IP Address for WAN Communication
Enabling Port Forwarding for WAN Communication
Testing out WAN Communication
Configuring A Second Router...Different Settings!
Creating a Multiplayer Game with the Pygame Module
The Pygame Module - Creating a Game Window and Game Loop
The Pygame Module - Setting Up a Game Class
The Pygame Module - Setting Up a Player Class
Using Fixed Length Headers - The Shortcomings of a Fixed Maximum Byte Size
Using Fixed Length Headers - The Solution to our Problems
Online Multiplayer Game Part 1 - Setting Up the Server
Online Multiplayer Game Part 2 - Setting Up the Client
Online Multiplayer Game Part 3 - Sending Pygame Configurations to the Client
Online Multiplayer Game Part 4 - Creating a Player on the Server
Online Multiplayer Game Part 5 - Sending the Player to the Client
Online Multiplayer Game Part 6 - Starting the Game on the Server
Online Multiplayer Game Part 7 - Starting the Game on All Clients
Online Multiplayer Game Part 8 - Player Movement on the Client
Online Multiplayer Game Part 9 - Creating a Game State on the Server
Online Multiplayer Game Part 10 - Processing Game State on All Clients
Online Multiplayer Game Part 11 - Resetting the Game for More Rounds
Online Multiplayer Game Part 12 - Official Network Playtest!

Save this course

Save The Art of Doing: Python Network Applications with Sockets! to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in The Art of Doing: Python Network Applications with Sockets! with these activities:
Review Basic Python Syntax
Solidify your understanding of Python syntax to ensure a smooth learning experience in the course.
Browse courses on Python Syntax
Show steps
  • Review data types, loops, and conditional statements.
  • Practice writing simple Python scripts.
Review: Python Network Programming Cookbook
Gain practical insights into network programming with Python through real-world examples and recipes.
Show steps
  • Read relevant chapters on socket programming and network protocols.
  • Experiment with the code examples provided in the book.
Socket Programming Exercises
Reinforce your socket programming skills by completing a series of exercises.
Show steps
  • Find socket programming exercises online.
  • Complete the exercises, focusing on different socket types and protocols.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Write a Blog Post on Sockets
Solidify your understanding of sockets by explaining the concepts in a blog post.
Show steps
  • Research socket programming concepts.
  • Write a clear and concise blog post explaining sockets.
  • Include code examples and diagrams.
Expand the GUI Chat Room
Extend the GUI chat room project by adding features like user authentication, private messaging, or file sharing.
Show steps
  • Plan the new features and design the user interface.
  • Implement the new features using Tkinter and Python.
  • Test the application thoroughly.
Review: Black Hat Python
Explore network security concepts and Python's role in building security tools.
Show steps
  • Read chapters related to network sniffing and packet manipulation.
  • Experiment with the code examples, focusing on security aspects.
Create a Network Monitoring Tool
Build a tool that monitors network traffic and displays relevant information.
Show steps
  • Design the tool's architecture and user interface.
  • Implement the tool using Python and relevant libraries.
  • Test the tool and document its functionality.

Career center

Learners who complete The Art of Doing: Python Network Applications with Sockets! will develop knowledge and skills that may be useful to these careers:
Network Programmer
A network programmer specializes in creating software that enables communication between devices over a network. This work often involves designing, developing, and maintaining network protocols and services. This course helps build a foundation for a career as a network programmer by providing hands-on experience in creating network applications using Python. The course covers essential networking concepts such as TCP and UDP connections, socket programming, and setting up network communication. Through projects like building a two-way terminal-based chat and a GUI chat room using Tkinter, learners gain skills in handling data transmission and managing concurrent connections, directly applicable to network programming tasks. Furthermore, learning to configure routers and implement port forwarding, as taught in this course, provides practical knowledge necessary for real-world network application deployment. Creating an online multiplayer game with Pygame offers exposure to advanced networking techniques.
Game Developer
A game developer is involved in the creation of video games for various platforms. This role can encompass many responsibilities, including programming game logic, designing gameplay mechanics, and implementing network functionality for multiplayer games. This course helps build a foundation for aspiring game developers, particularly those interested in online multiplayer games. The culmination of this course is the creation of an online multiplayer game using the Pygame module, which provides experience in developing game interfaces and handling network communication between players. The networking fundamentals covered in the course, such as TCP/UDP protocols and socket programming, are essential for developing networked games. Moreover, the course's focus on threading and data serialization using JSON prepares learners to manage concurrent game processes and transmit game state information efficiently, all critical skills for a game developer.
Technical Writer
Technical writers create documentation for software, hardware, and other technical products. This includes writing user manuals, API documentation, and tutorials. This course helps build the foundation for aspiring tech writers, particularly those interested in specializing in network or security software. Knowledge of networking principles is crucial for accurately explaining these applications. This course will provide practical experience in building network applications using Python, giving you a deeper technical understanding. You will gain expertise in concepts like TCP/UDP protocols, socket programming, and data serialization, which are essential for documenting network-related products effectively. The hands-on projects, such as building chat applications and multiplayer games, will give you valuable real-world examples to draw from in your writing. Furthermore, this course will help enhance your ability to effectively communicate complex network concepts to a broader audience.
Application Developer
Application developers design, develop, and maintain software applications for computers and other devices. This often includes creating user interfaces, implementing application logic, and ensuring seamless communication with other systems. This course may be useful for application developers interested in building networked applications. By focusing on network application development with Python, the course provides practical experience in creating applications that communicate over a network. Projects like building a terminal-based chat room and a GUI chat room using Tkinter helps build understanding of user interface design and network communication. The course also covers essential Python modules like socket, threading, and JSON, which are commonly used in application development. Understanding how to configure networks for external communication, as taught in this course, provides valuable insights into deploying applications in real-world environments. An application developer might find this course useful.
Software Engineer
Software engineers are involved in the design, development, testing, and maintenance of software systems. This role requires a strong understanding of programming principles, data structures, and algorithms. This course helps build the skills needed for software engineering, particularly for projects involving network communication. Through hands-on experience with Python and network application development, learners can gain practical knowledge of socket programming, threading, and data serialization. Creating chat applications and an online multiplayer game provides exposure to real-world software development challenges. The course's coverage of networking concepts, such as TCP/UDP protocols and port forwarding, is beneficial for software engineers working on distributed systems or network-dependent applications. A software engineer may find this course a good introduction to networking.
Quality Assurance Engineer
Quality assurance engineers are responsible for testing software and hardware to ensure that it meets quality standards. This includes writing test cases, executing tests, and reporting defects. The skills honed in this course may be a good addition to a quality assurance engineer's toolkit, especially for those involved in testing network-related applications. The course provides an overview of Python, socket programming, and other concepts, which are valuable in understanding how applications communicate over the network. Quality assurance engineers can leverage these skills to design more effective test cases and identify potential defects. The advanced GUI chat room project may especially be relevant.
Full-Stack Developer
Full stack developers work on both the front-end and back-end of web applications. This requires a broad understanding of various technologies, including front-end languages like HTML, CSS, and JavaScript, and back-end languages like Python. This course may be particularly useful for full stack developers interested in incorporating real-time communication features into their web applications. While the course focuses on desktop applications, the underlying networking concepts and Python skills are transferable to web development. The course covers the fundamentals of socket programming, threading, and data serialization using JSON, which can be applied to building real-time features. Understanding how to set up network communication and handle concurrent connections, as taught in this course, provides valuable insights for full stack developers. A full stack developer might find this course worthwhile.
Cybersecurity Analyst
Cybersecurity analysts protect computer systems and networks from cyber threats. This involves monitoring security systems, analyzing security breaches, and implementing security measures. This course may be relevant for cybersecurity analysts as it provides a foundational understanding of network communication. By learning how to create network applications using Python, cybersecurity analysts gain insights into how data is transmitted and received over a network. The course covers essential networking concepts, such as TCP/UDP protocols and socket programming, which are relevant to understanding network vulnerabilities. Moreover, the skills learned in this course can be used to develop tools for network monitoring and security analysis. A cybersecurity analyst might find this course relevant.
Network Administrator
Network administrators are responsible for maintaining and managing computer networks. This includes configuring network devices, troubleshooting network issues, and ensuring network security. This course may be valuable for network administrators as it provides a deeper understanding of network communication protocols and application development. Through hands-on experience with Python and network application development, network administrators can gain insights into how applications interact with the network. The course covers essential networking concepts, such as TCP/UDP protocols, socket programming, and port forwarding, which are relevant to network administration tasks. Understanding how to configure routers and set up network communication, as taught in this course, provides practical knowledge for network administrators.
DevOps Engineer
DevOps engineers focus on automating and streamlining the software development and deployment process. This role requires a broad understanding of both development and operations. This course may be beneficial for DevOps engineers as it provides practical skills in network application development and network configuration. By learning how to create network applications using Python, DevOps engineers gain insights into how applications communicate over a network. The course covers essential networking concepts, such as TCP/UDP protocols, socket programming, and port forwarding, which are relevant to deploying and managing network applications. A DevOps engineer might find the course useful.
Data Scientist
Data scientists analyze large datasets to extract meaningful insights and inform business decisions. This role requires a strong understanding of statistical analysis, machine learning, and data visualization. This course may be tangentially related to data science, particularly if the data scientist is working with network data. While the course focuses on network application development, the Python skills learned can be applied to data analysis tasks. The course covers essential Python modules, such as JSON, which are commonly used for data serialization and exchange. A data scientist focusing on network data might find this course helpful.
Systems Administrator
Systems administrators are responsible for the configuration, maintenance, and reliable operation of computer systems and servers. This includes installing new hardware and software, managing user accounts, and ensuring system security. This course may be related for systems administrators as it provides a foundational understanding of network communication and system interaction. While the course focuses on network application development, the Python skills learned can be applied to automating system administration tasks. The course covers essential networking concepts, such as TCP/UDP protocols and socket programming, which are relevant to understanding how systems communicate with each other. A systems administrator focusing on network operations might find this course helpful.
Technical Support Specialist
A technical support specialist provides assistance to users who are experiencing technical problems with computer systems, software, or hardware. This involves troubleshooting issues, providing guidance, and escalating complex problems to senior staff. This course may be of limited use for technical support specialists as it provides an understanding of network applications. While the course focuses on network application development, the Python skills learned are not directly relevant to providing technical support. The course covers networking concepts, which can be useful for troubleshooting network-related issues, but would not play a major role. A technical support specialist might find the course helpful.
Web Developer
Web developers create and maintain websites. This involves writing code, designing layouts, and ensuring that websites are functional and user-friendly. This course may be somewhat useful for web developers, especially those interested in learning more about back-end networking. While the course focuses on network application development outside of the web browser, the Python skills learned can be valuable. The course covers modules, such as JSON, which are used in web development as well. A web developer might find the course helpful.
IT Manager
An IT manager oversees the information technology infrastructure within an organization. This includes managing IT staff, planning technology upgrades, and ensuring that IT systems meet business needs. This course may be of limited value for IT managers. While the course provides an understanding of network application development using Python, the technical details may not be directly applicable to the management responsibilities of an IT manager. However, the course may provide helpful context. An IT manager might find the course helpful.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in The Art of Doing: Python Network Applications with Sockets!.
Provides practical recipes for network programming tasks in Python. It covers various networking protocols and techniques, offering hands-on examples that complement the course material. It is particularly useful for understanding real-world applications of sockets and network communication. This book can be used as a reference to deepen your understanding of the course.
Explores the darker side of Python programming, including network sniffing, packet manipulation, and building security tools. While not directly related to the course's projects, it provides a deeper understanding of network security concepts and how Python can be used in that domain. This book is more valuable as additional reading than as a current reference.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser