Socket Programming: Learn How To Build Client/server Application That Communicate Using Sockets
Socket Programming: Learn How To Build Client/server Application That Communicate Using Sockets
controlled by
controlled by process application
application process
developer
developer socket socket
TCP with TCP with controlled by
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 client creates socket:
• server process must first client TCP establishes
be running connection to server TCP
• When contacted by client,
• server must have created
server TCP creates new
socket (door) that socket for server process to
welcomes client’s contact communicate with client
Client contacts server by: – allows server to talk with
• creating client-local TCP multiple clients
socket
• specifying IP address, port
number of server process
application viewpoint
TCP provides reliable, in-order
transfer of bytes (“pipe”)
between client and server
Socket programming with TCP
Example client-server app: k e y b o a rd m o n ito r
inFromUser
in p u t
sends to server via socket s tr e a m
inFromServer
outToServer
o u tp u t in p u t
client s t r e a m s tr e a m
to n e tw o r k fr o m n e tw o r k
Client/server socket interaction: TCP
Server (running on hostid) Client
create socket,
port=x, for
incoming request:
welcomeSocket =
ServerSocket()
write reply to
connectionSocket read reply from
clientSocket
close
connectionSocket close
clientSocket
Example: Java client (TCP)
import java.io.*;
import java.net.*;
class TCPClient {
sentence = inFromUser.readLine();
Send line
to server outToServer.writeBytes(sentence + '\n');
clientSocket.close();
}
}
Example: Java server (TCP)
import java.io.*;
import java.net.*;
class TCPServer {
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 umber close
clientSocket
Example: Java client (UDP)
k e y b o a rd m o n ito r
inFromUser
in p u t
s tr e a m
PClient
ro c e s s
Input: receives
process
packet (TCP
Output: sends received “byte
packet (TCP sent stream”)
receivePacket
sendPacket
“byte stream”) UD P U D P
packet packet
client
c l i e n t S o c UDP
ket
socket UDP
socket
to n e tw o r k fr o m n e tw o r k
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];
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();
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