You are on page 1of 38

Trng ai Hoc Bach Khoa Tp.

HCM

LP TRNH MNG DNG SOCKET

Bi Ging 2

Khoa Hc v K Thut My Tnh Trang 1


Trng ai Hoc Bach Khoa Tp.HCM

KHI NIM V SOCKET

 Socket API
c gii thiu BSD4.1 UNIX, 1981
c ng dng khi to, s dng v hy b.
Dng c ch client/server
Cung cp hai dch v chuyn d liu thng qua
socket API:
unreliable datagram
reliable, byte stream-oriented

Khoa Khoa Hc v K Thut My Tnh Trang 2


Trng ai Hoc Bach Khoa Tp.HCM

KHI NIM V SOCKET

Khoa Khoa Hc v K Thut My Tnh Trang 3


Trng ai Hoc Bach Khoa Tp.HCM

THIT K GII THUT CLIENT/SERVER

 Thit k gii thut cho client


Gii thut cho chng trnh client dng UDP
 Xc nh a ch server.
 To socket.
 Gi/nhn d liu theo giao thc lp ng dng thit k.
 ng socket.

Gii thut cho chng trnh client dng TCP


 Xc nh a ch server
 To socket.
 Kt ni n server.
 Gi/nhn d liu theo giao thc lp ng dng thit k.
 ng kt ni.

Khoa Khoa Hc v K Thut My Tnh Trang 4


Trng ai Hoc Bach Khoa Tp.HCM

THIT K GII THUT CLIENT/SERVER

 Thit k gii thut cho Server


Chng trnh server c hai loi:
 Lp(iterative)
 ng thi (concurrent).
Hai dng giao thc chng trnh server:
 Connection-oriented
 Connectionless.

Khoa Khoa Hc v K Thut My Tnh Trang 5


Trng ai Hoc Bach Khoa Tp.HCM

THIT K GII THUT CLIENT/SERVER

Khoa Khoa Hc v K Thut My Tnh Trang 6


Trng ai Hoc Bach Khoa Tp.HCM

THIT K GII THUT CLIENT/SERVER

Khoa Khoa Hc v K Thut My Tnh Trang 7


Trng ai Hoc Bach Khoa Tp.HCM

THIT K GII THUT CLIENT/SERVER

Khoa Khoa Hc v K Thut My Tnh Trang 8


Trng ai Hoc Bach Khoa Tp.HCM

THIT K GII THUT CLIENT/SERVER

Khoa Khoa Hc v K Thut My Tnh Trang 9


Trng ai Hoc Bach Khoa Tp.HCM

THIT K GII THUT CLIENT/SERVER

Khoa Khoa Hc v K Thut My Tnh Trang 10


Trng ai Hoc Bach Khoa Tp.HCM

THIT K GII THUT CLIENT/SERVER

Khoa Khoa Hc v K Thut My Tnh Trang 11


Trng ai Hoc Bach Khoa Tp.HCM

LP TRNH MNG TRN JAVA

 Gi java.net
InetAddress
ServerSocket
Socket
URL
URLConnection
DatagramSocket

Khoa Khoa Hc v K Thut My Tnh Trang 12


Trng ai Hoc Bach Khoa Tp.HCM

LP TRNH MNG TRN JAVA

 InetAddress class
Class m t v a ch IP (Internet Protocol)
Cc phng thc getLocalHost, getByName, hay
getAllByName to mt InetAddress instance:
 public static InetAddess InetAddress.getByName(String hostname)
 public static InetAddess [] InetAddress.getAllByName(String
hostname)
 public static InetAddess InetAddress.getLocalHost()
ly a ch IP hay tn dng cc phng thc:
 getHostAddress()
 getHostName()

Khoa Khoa Hc v K Thut My Tnh Trang 13


Trng ai Hoc Bach Khoa Tp.HCM

LP TRNH MNG TRN JAVA


 In a ch IP ca localhost
import java.net.*;
public class HostInfo {
public static void main(String args[]) {
HostInfo host = new HostInfo();
host.init();
}
public void init() {
try {
InetAddress myHost = InetAddress.getLocalHost();
System.out.println(myHost.getHostAddress());
System.out.println(myHost.getHostName());
} catch (UnknownHostException ex) {
System.err.println("Cannot find local host");
}
}
}

Khoa Khoa Hc v K Thut My Tnh Trang 14


Trng ai Hoc Bach Khoa Tp.HCM

LP TRNH MNG TRN JAVA


 In a ch IP ca proxy.hcmut.edu.vn
import java.net.*;
class kku{
public static void main (String args[]) {
try {
InetAddress[] addresses =
InetAddress.getAllByName(proxy.hcmut.edu.vn");
for (int i = 0; i < addresses.length; i++) {
System.out.println(addresses[i]);
}
}
catch (UnknownHostException e) {
System.out.println("Could not find proxy.hcmut.edu.vn");
}
}
}
Khoa Khoa Hc v K Thut My Tnh Trang 15
Trng ai Hoc Bach Khoa Tp.HCM

LP TRNH MNG TRN JAVA

 Cc chng trnh c thm


To mt a ch IP t mng byte, chui String.
 InetAddressFactory.java
Cho mt a ch tm tn my.
 ReverseTest.java

Khoa Khoa Hc v K Thut My Tnh Trang 16


Trng ai Hoc Bach Khoa Tp.HCM

LP TRNH MNG TRN JAVA

Khoa Khoa Hc v K Thut My Tnh Trang 17


Trng ai Hoc Bach Khoa Tp.HCM

LP TRNH MNG TRN JAVA

 Socket class
Class m t v socket
To mt socket
 Socket(InetAddress address, int port)
 Socket(String host, int port)
 Socket(InetAddress address, int port, InetAddress, localAddr, int
localPort)
 Socket(String host, int port, InetAddress, localAddr, int localPort)
 Socket()

Khoa Khoa Hc v K Thut My Tnh Trang 18


Trng ai Hoc Bach Khoa Tp.HCM

LP TRNH MNG TRN JAVA


 Socket class (tip theo)
Ly thng tin v mt socket
 InetAddress getInetAddress() : tr v a ch m socket kt ni
n.
 int getPort() : tr v a ch m socket kt ni n.
 InetAddress getLocalAddress() : tr v a ch cc b.
 int getLocalPort() : tr v a ch cc b.
S dng Streams
 public OutputStream getOutputStream() throws IOException
Tr v mt output stream cho vic vit cc byte n socket ny.
 public InputStream getInputStream() throws IOException
Tr v mt input stream cho vic c cc byte t socket ny.

Khoa Khoa Hc v K Thut My Tnh Trang 19


Trng ai Hoc Bach Khoa Tp.HCM

LP TRNH MNG TRN JAVA


 Kt ni n 1 s webserver
import java.net.*;
import java.io.*;
public class getSocketInfo {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
try {
Socket theSocket = new Socket(args[i], 80);
System.out.println("Connected to " +
theSocket.getInetAddress() +
" on port " + theSocket.getPort() + " from port " +
theSocket.getLocalPort() + " of " +
theSocket.getLocalAddress());

Khoa Khoa Hc v K Thut My Tnh Trang 20


Trng ai Hoc Bach Khoa Tp.HCM

LP TRNH MNG TRN JAVA


 Kt ni n 1 s webserver (tip theo)
} catch (UnknownHostException e) {
System.err.println("I can't find " + args[i]);
} catch (SocketException e) {
System.err.println("Could not connect to " + args[i]);
} catch (IOException e) {
System.err.println(e);
}
} // end for
} // end main
} // end getSocketInfo

Khoa Khoa Hc v K Thut My Tnh Trang 21


Trng ai Hoc Bach Khoa Tp.HCM

LP TRNH MNG TRN JAVA

 ServerSocket class
Class m t v ServerSocket
To mt ServerSocket
 ServerSocket(int port) throws IOException
 ServerSocket(int port, int backlog) throws IOException
 ServerSocket(int port, int backlog, InetAddress bindAddr) throws
IOException

Khoa Khoa Hc v K Thut My Tnh Trang 22


Trng ai Hoc Bach Khoa Tp.HCM

LP TRNH MNG TRN JAVA

 ServerSocket class
Cc phng thc trong ServerSocket
 Socket accept() throws IOException : Lng nghe mt kt ni n
socket ny v chp nhn n.
 void close() throws IOException : ng socket.
 InetAddress getInetAddress() : tr v a ch cc b ca socket
 int getLocalPort() : Tr v port m server ang lng nghe.
 void setSoTimeout(int timeout) throws SocketException
 Enable/disable SO_TIMEOUT vi khai bo timeout (milliseconds)

Khoa Khoa Hc v K Thut My Tnh Trang 23


Trng ai Hoc Bach Khoa Tp.HCM

LP TRNH MNG TRN JAVA


 DateTime Server
import java.net.*;
import java.io.*;
import java.util.Date;
public class DayTimeServer {
public final static int daytimePort = 5000;
public static void main(String[] args) {
ServerSocket theServer;
Socket theConnection;
PrintStream p;
try {
theServer = new ServerSocket(daytimePort);

Khoa Khoa Hc v K Thut My Tnh Trang 24


Trng ai Hoc Bach Khoa Tp.HCM

LP TRNH MNG TRN JAVA


 DateTime Server (tip theo)
while (true) {
theConnection = theServer.accept();
p = new PrintStream(theConnection.getOutputStream());
p.println(new Date());
theConnection.close();
theServer.close();
}
}catch (IOException e) {
System.err.println(e);
}
}
}

Khoa Khoa Hc v K Thut My Tnh Trang 25


Trng ai Hoc Bach Khoa Tp.HCM

LP TRNH SOCKET VI UDP


 Cung cp c ch truyn khng tin cy gia cc nhm
cc byte (datagrams) gia client v server.
 Khng cn thit lp kt ni gia client v server.
 Sender phi gi km a ch IP v port ch
 Server khi nhn d liu s phn tch a ch ca
sender truyn li.
 C th server chp nhn nhiu client ti mt thi
im.

Khoa Khoa Hc v K Thut My Tnh Trang 26


Trng ai Hoc Bach Khoa Tp.HCM

LP TRNH SOCKET VI UDP

Khoa Khoa Hc v K Thut My Tnh Trang 27


Trng ai Hoc Bach Khoa Tp.HCM

V D (UDP Client)

Khoa Khoa Hc v K Thut My Tnh Trang 28


Trng ai Hoc Bach Khoa Tp.HCM

V D (UDP Client)

Khoa Khoa Hc v K Thut My Tnh Trang 29


Trng ai Hoc Bach Khoa Tp.HCM

V D (UDP Server)

Khoa Khoa Hc v K Thut My Tnh Trang 30


Trng ai Hoc Bach Khoa Tp.HCM

V D (UDP Server)

Khoa Khoa Hc v K Thut My Tnh Trang 31


Trng ai Hoc Bach Khoa Tp.HCM

LP TRNH SOCKET VI TCP


 Server
Server process phi chy trc.
Server phi to mt socket lng nghe v chp nhn cc kt ni t
client.
 Client
Khi to TCP socket.
Xc nh IP address, port number ca server.
Thit lp kt ni n server.
 Khi server nhn yu cu kt ni, n s chp nhn yu cu v
khi to socket mi giao tip vi client.
C th server chp nhn nhiu client ti mt thi im.

Khoa Khoa Hc v K Thut My Tnh Trang 32


Trng ai Hoc Bach Khoa Tp.HCM

LP TRNH SOCKET VI TCP

Khoa Khoa Hc v K Thut My Tnh Trang 33


Trng ai Hoc Bach Khoa Tp.HCM

V D (TCP Client)

Khoa Khoa Hc v K Thut My Tnh Trang 34


Trng ai Hoc Bach Khoa Tp.HCM

V D (TCP Client tip theo)

Khoa Khoa Hc v K Thut My Tnh Trang 35


Trng ai Hoc Bach Khoa Tp.HCM

V D (TCP Server)

Khoa Khoa Hc v K Thut My Tnh Trang 36


Trng ai Hoc Bach Khoa Tp.HCM

V D (TCP Server tip theo)

Khoa Khoa Hc v K Thut My Tnh Trang 37


Trng ai Hoc Bach Khoa Tp.HCM

BI TP
 Vit chng trnh trn Java/C tng t nh
nslookup:
Cho 1 tn tm ra a ch IP.
Cho 1 a ch IP tm ra tn.
Giao din tng t nh sau:

Khoa Khoa Hc v K Thut My Tnh Trang 38

You might also like