Professional Documents
Culture Documents
Socket Programming
in Java
Required reading:
Kurose 2.7
must be known
socket (IP address, port)
Socket Programming (cont.) 4
Socket Programming (cont.) 5
TCP vs. UDP in TCP is useful when indefinite amount of data need
Socket Programming to be transferred in order and reliably
Initiation of
communication
Client-Server Model (cont.) 9
An iterative server can process only one request at a time it receives a request,
processes it, and sends the response to the requestor before handling another request.
The servers that use UDP (i.e. connectionless servers) are normally iterative.
Client-Server Model (cont.) 10
CLIENT: SERVER:
(1) create socket Client (1) create socket
(2) repeat: (2) repeat:
Server
(2.a) send Client (running) (2.a) receive
(2.b) receive (2.b) process
(2.c) process (2.c) send
(3) destroy Client
CLIENT: SERVER:
Client
(1) create socket (1) create socket
(2) connect (1) (2) Server
(2) listen
Client (running)
Client
Client
(3) repeat
(3) repeat: (3.a) create new socket
(3.a) write (3.b) repeat:
Server
(3.b) read Client (3.b.1) read
(running)
(3.c) process (3.b.2) process
(3)
(3.b.3) write
(4) destroy Client (3.c) destroy socket
Client-Server Model (cont.) 14
Java code
to establish ServerSocket servsock = new ServerSocket(port, backlog, bindAddr);
a socket
Java Socket Programming (cont.) 18
java.net package
ServerSocket class passive TCP (server) socket used on server side to wait for
client connection requests
Socket class active TCP socket can be used as communication end point
both on client and server side
https://docs.oracle.com/javase/7/docs/api/java/net/package-summary.html
19
Java Socket Programming (cont.) 20
inFromUser
1) A client reads a line from its standard input
input (keyboard) and sends line out stream
inFromServer
outToServer
4) The server sends the modified line output input
stream stream
out through its socket to the client.
Server: HELLO
Java Socket Programming with UDP 21
Server
Client (running)
write reply to
HELLO serverSocket
specifying clients
read reply from host address &
clientSocket port number
close
clientSocket
Java Socket Programming with UDP (cont.) 22
clientSocket.send(sendPacket);
send datagram
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
while waiting for
response, create
placeholder for packet clientSocket.receive(receivePacket);
read datagram
String modifiedSentence = new String(receivePacket.getData());
}
}
Java Socket Programming with UDP (cont.) 24
server on blue.cs.yorku.ca
inFromClient outToClient
import java.io.*; UDP
import java.net.*; socket
UDP Layer
class UDPServer {
while(true) {
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
Java Socket Programming with UDP (cont.) 25
sendData = capitalizedSentence.getBytes();
create datagram
to send to client DatagramPacket sendPacket = new DatagramPacket(sendData,
sendData.length, IPAddress, port);
write datagram
to socket serverSocket.send(sendPacket);
Server
Client (running)
TCP
connection wait for
create socket, setup incoming requests
connect to server
clientSocket = new Socket()
create new socket
connectionSocket = welcomeSocket.accept()
close
close connectionSocket
clientSocket
Java Socket Programming with TCP (cont.) 27
String sentence;
String modifiedSentence;
create input stream
attached to keyboard
BufferedReader inFromUser = new BufferedReader (new
InputStreamReader(System.in));
create socket;
connect it to server Socket clientSocket = new Socket(blue.cs.yorku.ca, 5555);
server runs on blue
- port 5555
DataOutputStream outToServer =
create output stream new DataOutputStream(clientSocket.getOutputStream());
attached to socket
outToServer.writeBytes(sentence + \n);
send line to server
modifiedSentence = inFromServer.readLine();
print to monitor
line read from server System.out.println(FROM SERVER: +modifiedSentence);
clientSocket.close();
}
}
Java Socket Programming with TCP (cont.) 29
server on blue.cs.yorku.ca
inFromClient outToClient
import java.io.*; TCP
socket
import java.net.*;
TCP Layer
class TCPServer { dedicated socket
String clientSentence;
String capitalizedSentence;
create welcoming
socket at port 5555
ServerSocket welcomeSocket = new ServerSocket(5555);
outToClient.writeBytes(capitalizedSentence);
}
}
}
NOTE: This version of TCP Server is NOT actually serve clients concurrently,
but it can be easily modified (with threads) to do so.