You are on page 1of 38

Khoa Hc v K Thut My Tnh Trang 1

Trng ai Hoc Bach Khoa Tp.HCM


Bi Ging 2
LP TRNH MNG DNG SOCKET
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 2
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
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 3
KHI NIM V SOCKET
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 4
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.
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 5
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.
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 6
THIT K GII THUT CLIENT/SERVER
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 7
THIT K GII THUT CLIENT/SERVER
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 8
THIT K GII THUT CLIENT/SERVER
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 9
THIT K GII THUT CLIENT/SERVER
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 10
THIT K GII THUT CLIENT/SERVER
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 11
THIT K GII THUT CLIENT/SERVER
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 12
LP TRNH MNG TRN JAVA
Gi java.net
InetAddress
ServerSocket
Socket
URL
URLConnection
DatagramSocket
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 13
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()
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 14
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");
}
}
}
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 15
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");
}
}
}
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 16
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
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 17
LP TRNH MNG TRN JAVA
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 18
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()
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 19
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.
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 20
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());
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 21
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
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 22
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
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 23
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)
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 24
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);
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 25
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);
}
}
}
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 26
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.
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 27
LP TRNH SOCKET VI UDP
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 28
V D (UDP Client)
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 29
V D (UDP Client)
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 30
V D (UDP Server)
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 31
V D (UDP Server)
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 32
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.
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 33
LP TRNH SOCKET VI TCP
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 34
V D (TCP Client)
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 35
V D (TCP Client tip theo)
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 36
V D (TCP Server)
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 37
V D (TCP Server tip theo)
Trng ai Hoc Bach Khoa Tp.HCM
Khoa Khoa Hc v K Thut My Tnh Trang 38
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:

You might also like