Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
110 views

Socket Programming Tutorial

The document discusses socket programming and how it allows applications to communicate over networks. It covers both TCP and UDP socket programming, explaining how clients and servers interact to send and receive data through sockets.

Uploaded by

mittal3008
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
110 views

Socket Programming Tutorial

The document discusses socket programming and how it allows applications to communicate over networks. It covers both TCP and UDP socket programming, explaining how clients and servers interact to send and receive data through sockets.

Uploaded by

mittal3008
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 20

Socket Programming

Tutorial
Chapter 2: Application layer
• 2.1 Principles of • 2.6 P2P file sharing
network applications • 2.7 Socket
• 2.2 Web and HTTP programming with
• 2.3 FTP TCP
• 2.4 Electronic Mail • 2.8 Socket
– SMTP, POP3, IMAP programming with
• 2.5 DNS UDP
Socket programming
Goal: learn how to build client/server application that
communicate using sockets
Socket API socket
• introduced in BSD4.1 UNIX, 1981
a host-local,
• explicitly created, used, released
application-created,
by apps
OS-controlled interface
• client/server paradigm (a “door”) into which
• two types of transport service via application process can
socket API: both send and
– unreliable datagram receive messages to/from
– reliable, byte stream-oriented another application
process
Socket-programming using TCP
Socket: a door between application process and end-end-
transport protocol (UCP or TCP)
TCP service: reliable transfer of bytes from one process to
another

controlled by
controlled by process application
application process
developer
developer socket socket
controlled by TCP with TCP with controlled by
buffers, operating
operating buffers, internet system
system variables variables

host or host or
server server
Socket programming with TCP
Client must contact server • When contacted by client,
• server process must first be server TCP creates new
running socket for server process to
• server must have created communicate with client
socket (door) that welcomes – allows server to talk with
client’s contact multiple clients
Client contacts server by: – source port numbers used
• creating client-local TCP to distinguish clients (more
socket in Chap 3)
• specifying IP address, port
number of server process application viewpoint
• When client creates socket: TCP provides reliable, in-order
client TCP establishes transfer of bytes (“pipe”)
connection to server TCP between client and server
Client/server socket interaction: TCP
Server (running on hostid) Client
create socket,
port=x, for
incoming request:
welcomeSocket =
ServerSocket()

TCP create socket,


wait for incoming
connection request connection setup connect to hostid, port=x
connectionSocket = clientSocket =
welcomeSocket.accept() Socket()

send request using


read request from clientSocket
connectionSocket

write reply to
connectionSocket read reply from
clientSocket
close
connectionSocket close
clientSocket
Stream jargon
keyboard monitor

• A stream is a sequence
of characters that flow

inFromUser
input
into or out of a process. stream

Client
• An input stream is Process
process
attached to some input
source for the process,
e.g., keyboard or socket.

inFromServer
• An output stream is

outToServer
output input
stream stream

attached to an output
source, e.g., monitor or client
clientSocket
TCP
socket
socket. TCP
socket

to network from network


Socket programming with TCP
Example client-server app:
1) client reads line from
standard input (inFromUser
stream) , sends to server via
socket (outToServer
stream)
2) server reads line from socket
3) server converts line to
uppercase, sends back to
client
4) client reads, prints modified
line from socket
(inFromServer stream)
Example: Java client (TCP)
import java.io.*;
import java.net.*;
class TCPClient {

public static void main(String argv[]) throws Exception


{
String sentence;
String modifiedSentence;
Create
input stream BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Create
client socket, Socket clientSocket = new Socket("hostname", 6789);
connect to server
Create DataOutputStream outToServer =
output stream new DataOutputStream(clientSocket.getOutputStream());
attached to socket
Example: Java client (TCP), cont.

Create BufferedReader inFromServer =


input stream new BufferedReader(new
attached to socket InputStreamReader(clientSocket.getInputStream()));

sentence = inFromUser.readLine();
Send line
to server outToServer.writeBytes(sentence + '\n');

Read line modifiedSentence = inFromServer.readLine();


from server
System.out.println("FROM SERVER: " + modifiedSentence);

clientSocket.close();

}
}
Example: Java server (TCP)
import java.io.*;
import java.net.*;

class TCPServer {

public static void main(String argv[]) throws Exception


{
String clientSentence;
Create String capitalizedSentence;
welcoming socket
ServerSocket welcomeSocket = new ServerSocket(6789);
at port 6789
while(true) {
Wait, on welcoming
socket for contact Socket connectionSocket = welcomeSocket.accept();
by client
BufferedReader inFromClient =
Create input new BufferedReader(new
stream, attached InputStreamReader(connectionSocket.getInputStream()));
to socket
Example: Java server (TCP), cont
Create output
stream, attached DataOutputStream outToClient =
to socket new DataOutputStream(connectionSocket.getOutputStream());
Read in line
from socket clientSentence = inFromClient.readLine();

capitalizedSentence = clientSentence.toUpperCase() + '\n';


Write out line
outToClient.writeBytes(capitalizedSentence);
to socket
}
}
} End of while loop,
loop back and wait for
another client connection
Chapter 2: Application layer
• 2.1 Principles of • 2.6 P2P file sharing
network applications • 2.7 Socket
• 2.2 Web and HTTP programming with
• 2.3 FTP TCP
• 2.4 Electronic Mail • 2.8 Socket
– SMTP, POP3, IMAP programming with
• 2.5 DNS UDP
• 2.9 Building a Web
server
Socket programming with UDP
UDP: no “connection” between
client and server
• no handshaking
• sender explicitly attaches IP application viewpoint
address and port of UDP provides unreliable transfer
destination to each packet of groups of bytes (“datagrams”)
• server must extract IP between client and server
address, port of sender
from received packet
UDP: transmitted data may be
received out of order, or lost
Client/server socket interaction: UDP
Server (running on hostid) Client

create socket,
port=x, for create socket,
clientSocket =
incoming request: DatagramSocket()
serverSocket =
DatagramSocket()
Create, address (hostid, port=x,
send datagram request
using clientSocket
read request from
serverSocket

write reply to
serverSocket
specifying client read reply from
host address, clientSocket
port number close
clientSocket
Example: Java client (UDP)
keyboard monitor

inFromUser
input
stream

Client
Process
Input: receives pac
process
ket (recall thatTC
Output: sends P received “byte s
packet (recall tream”)

receivePacket
sendPacket
that TCP sent UDP
packet
UDP
packet
“byte stream”)
client
clientSocket UDP
socket UDP
socket

to network from network


Example: Java client (UDP)
import java.io.*;
import java.net.*;

class UDPClient {
public static void main(String args[]) throws Exception
{
Create
input stream BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Create
client socket DatagramSocket clientSocket = new DatagramSocket();
Translate
InetAddress IPAddress = InetAddress.getByName("hostname");
hostname to IP
address using DNS byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];

String sentence = inFromUser.readLine();


sendData = sentence.getBytes();
Example: Java client (UDP), cont.
Create datagram
with data-to-send, DatagramPacket sendPacket =
length, IP addr, port new DatagramPacket(sendData, sendData.length, IPAddress, 9876);

Send datagram clientSocket.send(sendPacket);


to server
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
Read datagram
clientSocket.receive(receivePacket);
from server
String modifiedSentence =
new String(receivePacket.getData());

System.out.println("FROM SERVER:" + modifiedSentence);


clientSocket.close();
}
}
Example: Java server (UDP)
import java.io.*;
import java.net.*;

class UDPServer {
public static void main(String args[]) throws Exception
Create {
datagram socket
DatagramSocket serverSocket = new DatagramSocket(9876);
at port 9876
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];

while(true)
{
Create space for
DatagramPacket receivePacket =
received datagram
new DatagramPacket(receiveData, receiveData.length);
Receive serverSocket.receive(receivePacket);
datagram
Example: Java server (UDP), cont
String sentence = new String(receivePacket.getData());
Get IP addr
InetAddress IPAddress = receivePacket.getAddress();
port #, of
sender int port = receivePacket.getPort();

String capitalizedSentence = sentence.toUpperCase();

sendData = capitalizedSentence.getBytes();
Create datagram
DatagramPacket sendPacket =
to send to client new DatagramPacket(sendData, sendData.length, IPAddress,
port);
Write out
datagram serverSocket.send(sendPacket);
to socket }
}
} End of while loop,
loop back and wait for
another datagram

You might also like