COMP2322 Lab 4 Socket Programming

Download Report

Transcript COMP2322 Lab 4 Socket Programming

COMP2322 Lab 4
Socket Programming
Toby Lam
March 2, 2016
Requirement


Experience in Python Programming
Python for Programmers


https://wiki.python.org/moin/BeginnersGuide/Pr
ogrammers
Learn Python Online


https://www.codecademy.com/learn/python
http://www.learnpython.org/
2
Simple Example


Suppose I am interested in knowing the latitude
and longitude of The Hong Kong Polytechnic
University
I can enter the following URL in the browser to
obtain the information (in JSON format)

http://maps.google.com/maps/api/geocode/json?add
ress=The Hong Kong Polytechnic
University&sensor=false&region=Hong Kong
3
4
Client/Server Model
5
Client/Server Model

Examples of Client


Google Chrome, Firefox
Examples of Server

Apache, IIS
6
Make a Raw HTTP Connection
7
socket in Python

Instead of making an HTTP request through httplib
package


socket – support basic network communications on an
IP network


We can make the request by using socket
Low-level approach
Raw network communication

A matter of sending and receiving strings
8
Make a Request By Socket
9
Network Sockets


Used to identify particular processes
(programs) on particular machines
Network Socket is composed of 2 numbers:


IP address – machine identifier
Port number – process identifier

Well-known ports:

25 – SMTP (email), 80 - HTTP (web), 110 – POP3 (email), 443 –
HTTPS (secure web)
10
Network Sockets

Socket() used in previous example is NOT the
lowest protocol level

The layers below the socket() are:

Transmission Control Protocol (TCP)



One alternative to TCP is UDP (we focus on TCP in this lab)
Internet Protocol (IP)
Link layer
11
“Passive” Listening Socket VS Active
“Connected” Socket

Server



The server is a machine that is ready to receive
connections
It holds the address and the port number
Passive Listening Socket

It DOES NOT represent any actual network
conversation


<= no data can be received / sent by this kind of port!
(Q: HOW it works then ???)
12
“Passive” Listening Socket VS Active
“Connected” Socket

When the server get the request from the
passive listening socket



Server checks with the OS willingness to receive
incoming connections
If NO, drop the request
If YES, an active connected socket is then created


This socket is bounded to one remote conversation partner
Example: A busy web server, there is a thousand active
sockets all bound to its public IP address at port 80
13
A Simple TCP Client and Server
14
A Simple TCP Client and Server
15
16
Limitation


At the moment, the message must be fixed in 16
characters (octets)!
Solution:

Client side, before sending the message
1) Determine the length of the message L [Assume max. number of
length is 255]
–
Add L at the beginning of the message
2) Send the new message to server

Server side, after received the message
1) Extract the length of the message (first 3 characters)
2) Read the rest of the message with the proper length
17
Modified TCP Client and Server
18
Modified TCP Client and Server
19
20
Lab Exercise (Total mark: 50) [1 / 2]
1. Create 2 python files (10 marks)
Client file - client_studentID.py
Server file - server_studentID.py
E.g. if my student ID is 12345678d, name the client
file as client_12345678d.py
–
–
–
2. Provide your full name and student ID (10 marks)
At the beginning of each python program, by using
program comment, provide the following information
–
•
•
Your full name
Your student ID
21
Lab Exercise (Total mark: 50) [2 / 2]
3. Create a simple instant messaging system (25 marks)
–
–
–
The messaging system should let the client and server
send the message in one by one approach (20 marks)
(more detail description is shown in next page)
Coding - easy to read (5 marks)
if there is any syntax error in your programs (i.e. cannot
run), ZERO mark will be given in this section
4. Submission (5 marks)
–
Submit two python programs to LEARN@POLYU before
the submission deadline (Monday, 14 March 2016, at
noon)
•
It is not required to zip the files!
22
Message in one by one approach
•
•
Message in one by one approach IS NOT the
same as common messaging platform!!
It works like this:
1.
2.
3.
4.
5.
6.
7.
Server is waiting for connection
Client is connected to Server
Client sends message
Server receives message
Server sends message
Client receives message
Go back to (3) until Client/Server sends message
“BYEBYE”
23
24
25
Reference

J. Goerzen and B. Rhodes, Foundations of
Python Network Programming: The
comprehensive guide to building network
applications with Python, Second Edition,
Apress, 2010
26