Tải bản đầy đủ (.pdf) (38 trang)

Lập trình socket với java

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (499.28 KB, 38 trang )

Khoa Hc v K Thut Mỏy Tớnh
Trang 1
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Bi Ging 2
LP TRèNH MNG DNG SOCKET
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
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.

Dựng c ch client/server

Cung cp hai dch v chuyn d liu thụng qua
socket API:
unreliable datagram
reliable, byte stream-oriented
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 3
KHI NIM V SOCKET
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 4
THIT K GII THUT CLIENT/SERVER
Thi



t k

gi

i thu

t cho client
Gii thut cho chng trỡnh client dựng UDP

Xỏc nh a ch server.

To socket.

Gi/nhn d liu theo giao thc lp ng dng ó thit k.

úng socket.
Gii thut cho chng trỡnh client dựng TCP

Xỏc 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.
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh

Trang 5
THIT K GII THUT CLIENT/SERVER

Thit k gii thut cho Server

Chng trỡnh server cú hai loi:
L

p(iterative)


ng th

i (concurrent).

Hai dng giao thc chng trỡnh server:
Connection-oriented
Connectionless.
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 6
THIT K GII THUT CLIENT/SERVER
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 7
THIT K GII THUT CLIENT/SERVER
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 8
THIT K GII THUT CLIENT/SERVER

Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 9
THIT K GII THUT CLIENT/SERVER
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 10
THIT K GII THUT CLIENT/SERVER
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 11
THIT K GII THUT CLIENT/SERVER
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 12
LP TRèNH MNG TRấN JAVA

Gúi java.net
InetAddress
ServerSocket
Socket
URL
URLConnection
DatagramSocket
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 13
LP TRèNH MNG TRấN JAVA

InetAddress class

Class mụ t

v

a ch

IP (Internet Protocol)
Cỏc ph

ng 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 tờn dựng cỏc ph

ng th

c:
getHostAddress()
getHostName()
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 14
LP TRèNH MNG TRấN 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");
}
}
}
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 15
LP TRèNH MNG TRấN 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");
}
}

}
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 16
LP TRèNH MNG TRấN JAVA

Cỏc chng trỡnh c thờm
T

o m

t

a ch

IP t

m

ng byte, chu

i String.
InetAddressFactory.java
Cho m

t

a ch

tỡm tờn mỏy.

ReverseTest.java
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 17
LP TRèNH MNG TRấN JAVA
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 18
LP TRèNH MNG TRấN 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()
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 19

LP TRèNH MNG TRấN JAVA
Socket class (ti

p theo)
Ly thụng 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 cỏc byte n socket ny.
public InputStream getInputStream() throws IOException
Tr v mt input stream cho vic c cỏc byte t socket ny.
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 20
LP TRèNH MNG TRấN 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());
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 21
LP TRèNH MNG TRấN 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
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 22
LP TRèNH MNG TRấN 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
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 23
LP TRèNH MNG TRấN JAVA


ServerSocket class
Cỏc ph

ng th

c 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 bỏo timeout (milliseconds)
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM
Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 24
LP TRèNH MNG TRấN 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);
Trửụứng ẹaùi Hoùc Baựch Khoa Tp.HCM

Khoa Khoa Hc v K Thut Mỏy Tớnh
Trang 25
LP TRèNH MNG TRấN 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);
}
}
}

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×