Download as pdf or txt
Download as pdf or txt
You are on page 1of 38

Trng ai Hoc Bach Khoa Tp.

HCM

L P TRNH M NG DNG SOCKET

Bi Gi ng 2

Khoa H c v K Thu t My Tnh

Trang 1

Trng ai Hoc Bach Khoa Tp.HCM

KHI NI M V SOCKET
Socket API

c gi i thi u BSD4.1 UNIX, 1981 c ng d ng kh i t o, s d ng v h y b . Dng c ch client/server Cung c p hai d ch v chuy n d li u thng qua socket API: unreliable datagram reliable, byte stream-oriented
Khoa Khoa H c v K Thu t My Tnh Trang 2

Trng ai Hoc Bach Khoa Tp.HCM

KHI NI M V SOCKET

Khoa Khoa H c v K Thu t My Tnh

Trang 3

Trng ai Hoc Bach Khoa Tp.HCM

THI T K GI I THU T CLIENT/SERVER


Thi t k gi i thu t cho client

Gi i thu t cho chng trnh client dng UDP


Xc nh a ch server. T o socket. G i/nh n d li u theo giao th c l p ng d ng thi t k . ng socket.

Gi i thu t cho chng trnh client dng TCP


Xc nh a ch server T o socket. K t n i n server. G i/nh n d li u theo giao th c l p ng d ng thi t k . ng k t n i.
Khoa Khoa H c v K Thu t My Tnh Trang 4

Trng ai Hoc Bach Khoa Tp.HCM

THI T K GI I THU T CLIENT/SERVER

Thi t k gi i thu t cho Server

Chng trnh server c hai lo i:


L p(iterative) ng th i (concurrent).

Hai d ng giao th c chng trnh server:


Connection-oriented Connectionless.

Khoa Khoa H c v K Thu t My Tnh

Trang 5

Trng ai Hoc Bach Khoa Tp.HCM

THI T K GI I THU T CLIENT/SERVER

Khoa Khoa H c v K Thu t My Tnh

Trang 6

Trng ai Hoc Bach Khoa Tp.HCM

THI T K GI I THU T CLIENT/SERVER

Khoa Khoa H c v K Thu t My Tnh

Trang 7

Trng ai Hoc Bach Khoa Tp.HCM

THI T K GI I THU T CLIENT/SERVER

Khoa Khoa H c v K Thu t My Tnh

Trang 8

Trng ai Hoc Bach Khoa Tp.HCM

THI T K GI I THU T CLIENT/SERVER

Khoa Khoa H c v K Thu t My Tnh

Trang 9

Trng ai Hoc Bach Khoa Tp.HCM

THI T K GI I THU T CLIENT/SERVER

Khoa Khoa H c v K Thu t My Tnh

Trang 10

Trng ai Hoc Bach Khoa Tp.HCM

THI T K GI I THU T CLIENT/SERVER

Khoa Khoa H c v K Thu t My Tnh

Trang 11

Trng ai Hoc Bach Khoa Tp.HCM

L P TRNH M NG TRN JAVA


Gi java.net

InetAddress ServerSocket Socket URL URLConnection DatagramSocket

Khoa Khoa H c v K Thu t My Tnh

Trang 12

Trng ai Hoc Bach Khoa Tp.HCM

L P TRNH M NG TRN JAVA


InetAddress class

Class m t v a ch IP (Internet Protocol) Cc phng th c getLocalHost, getByName, hay getAllByName t o m t InetAddress instance:
public static InetAddess InetAddress.getByName(String hostname) public static InetAddess [] InetAddress.getAllByName(String hostname) public static InetAddess InetAddress.getLocalHost()

l y

a ch IP hay tn dng cc phng th c:

getHostAddress() getHostName()
Khoa Khoa H c v K Thu t My Tnh Trang 13

Trng ai Hoc Bach Khoa Tp.HCM

L P TRNH M NG TRN JAVA


In a ch IP c a 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 H c v K Thu t My Tnh Trang 14

Trng ai Hoc Bach Khoa Tp.HCM

L P TRNH M NG TRN JAVA


In a ch IP c a 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 H c v K Thu t My Tnh

Trang 15

Trng ai Hoc Bach Khoa Tp.HCM

L P TRNH M NG TRN JAVA


Cc chng trnh

c thm

T om t Cho m t

a ch IP t m ng byte, chu i String. a ch tm tn my.

InetAddressFactory.java

ReverseTest.java

Khoa Khoa H c v K Thu t My Tnh

Trang 16

Trng ai Hoc Bach Khoa Tp.HCM

L P TRNH M NG TRN JAVA

Khoa Khoa H c v K Thu t My Tnh

Trang 17

Trng ai Hoc Bach Khoa Tp.HCM

L P TRNH M NG TRN JAVA


Socket class

Class m t v socket T o m t 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 H c v K Thu t My Tnh

Trang 18

Trng ai Hoc Bach Khoa Tp.HCM

L P TRNH M NG TRN JAVA


Socket class (ti p theo)

L y thng tin v m t socket InetAddress getInetAddress() : tr v a ch m socket k t n i n. int getPort() : tr v a ch m socket k t n i n. InetAddress getLocalAddress() : tr v a ch c c b . int getLocalPort() : tr v a ch c c b . S d ng Streams public OutputStream getOutputStream() throws IOException Tr v m t output stream cho vi c vi t cc byte n socket ny. public InputStream getInputStream() throws IOException Tr v m t input stream cho vi c c cc byte t socket ny.

Khoa Khoa H c v K Thu t My Tnh

Trang 19

Trng ai Hoc Bach Khoa Tp.HCM

L P TRNH M NG TRN JAVA


K t n i 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 H c v K Thu t My Tnh Trang 20

Trng ai Hoc Bach Khoa Tp.HCM

L P TRNH M NG TRN JAVA


K t n i n 1 s webserver (ti p 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 H c v K Thu t My Tnh

Trang 21

Trng ai Hoc Bach Khoa Tp.HCM

L P TRNH M NG TRN JAVA


ServerSocket class

Class m t v ServerSocket T o m t ServerSocket


ServerSocket(int port) throws IOException ServerSocket(int port, int backlog) throws IOException ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException

Khoa Khoa H c v K Thu t My Tnh

Trang 22

Trng ai Hoc Bach Khoa Tp.HCM

L P TRNH M NG TRN JAVA


ServerSocket class

Cc phng th c trong ServerSocket


Socket accept() throws IOException : L ng nghe m t k t n i n socket ny v ch p nh n n. void close() throws IOException : ng socket. InetAddress getInetAddress() : tr v a ch c c b c a socket int getLocalPort() : Tr v port m server ang l ng nghe. void setSoTimeout(int timeout) throws SocketException Enable/disable SO_TIMEOUT v i khai bo timeout (milliseconds)

Khoa Khoa H c v K Thu t My Tnh

Trang 23

Trng ai Hoc Bach Khoa Tp.HCM

L P TRNH M NG 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 H c v K Thu t My Tnh

Trang 24

Trng ai Hoc Bach Khoa Tp.HCM

L P TRNH M NG TRN JAVA


DateTime Server (ti p 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 H c v K Thu t My Tnh Trang 25

Trng ai Hoc Bach Khoa Tp.HCM

L P TRNH SOCKET V I UDP


Cung c p c ch truy n khng tin c y gi a cc nhm cc byte (datagrams) gi a client v server. Khng c n thi t l p k t n i gi a client v server. Sender ph i g i km a ch IP v port ch Server khi nh n d li u s phn tch a ch c a sender truy n l i. C th server ch p nh n nhi u client t i m t th i i m.
Khoa Khoa H c v K Thu t My Tnh Trang 26

Trng ai Hoc Bach Khoa Tp.HCM

L P TRNH SOCKET V I UDP

Khoa Khoa H c v K Thu t My Tnh

Trang 27

Trng ai Hoc Bach Khoa Tp.HCM

V D (UDP Client)

Khoa Khoa H c v K Thu t My Tnh

Trang 28

Trng ai Hoc Bach Khoa Tp.HCM

V D (UDP Client)

Khoa Khoa H c v K Thu t My Tnh

Trang 29

Trng ai Hoc Bach Khoa Tp.HCM

V D (UDP Server)

Khoa Khoa H c v K Thu t My Tnh

Trang 30

Trng ai Hoc Bach Khoa Tp.HCM

V D (UDP Server)

Khoa Khoa H c v K Thu t My Tnh

Trang 31

Trng ai Hoc Bach Khoa Tp.HCM

L P TRNH SOCKET V I TCP


Server

Server process ph i ch y tr c. Server ph i t o m t socket l ng nghe v ch p nh n cc k t n i t client. Kh i t o TCP socket. Xc nh IP address, port number c a server. Thi t l p k t n i n server.

Client

Khi server nh n yu c u k t n i, n s ch p nh n yu c u v kh i t o socket m i giao ti p v i client.

C th server ch p nh n nhi u client t i m t th i i m.

Khoa Khoa H c v K Thu t My Tnh

Trang 32

Trng ai Hoc Bach Khoa Tp.HCM

L P TRNH SOCKET V I TCP

Khoa Khoa H c v K Thu t My Tnh

Trang 33

Trng ai Hoc Bach Khoa Tp.HCM

V D (TCP Client)

Khoa Khoa H c v K Thu t My Tnh

Trang 34

Trng ai Hoc Bach Khoa Tp.HCM

V D (TCP Client ti p theo)

Khoa Khoa H c v K Thu t My Tnh

Trang 35

Trng ai Hoc Bach Khoa Tp.HCM

V D (TCP Server)

Khoa Khoa H c v K Thu t My Tnh

Trang 36

Trng ai Hoc Bach Khoa Tp.HCM

V D (TCP Server ti p theo)

Khoa Khoa H c v K Thu t My Tnh

Trang 37

Trng ai Hoc Bach Khoa Tp.HCM

BI T P
Vi t 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 di n tng t nh sau:

Khoa Khoa H c v K Thu t My Tnh

Trang 38

You might also like