Bài giảng Lập trình mạng - Chương 1: Lập trình mạng dùng Socket - Nguyễn Cao Đạt

Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
LP TRÌNH MNG DÙNG SOCKET  
CHƯƠNG 1  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 1  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
KHÁI NIM VSOCKET  
z Socket API  
Ðược gii thiu BSD4.1 UNIX, 1981  
Ðược ng dng khi to, sdng và hy b.  
Dùng cơ chế client/server  
Cung cp hai dch vchuyn dliu thông qua  
socket API:  
• unreliable datagram  
• reliable, byte stream-oriented  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 2  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
KHÁI NIM VSOCKET  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 3  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
THIT KGII THUT CLIENT/SERVER  
z Thiết kế gii thut cho client  
Gii thut cho chương trình client dùng UDP  
z Xác định địa chserver.  
z Gi/nhn dliu theo giao thc lp ng dng đã thiết kế.  
z Đóng socket.  
Gii thut cho chương trình client dùng TCP  
z Xác định địa chserver  
z To socket.  
z Kết ni đến server.  
z Gi/nhn dliu theo giao thc lp ng dng đã thiết kế.  
z Đóng kết ni.  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 4  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
THIT KGII THUT CLIENT/SERVER  
z Thiết kế gii thut cho Server  
Chương trình server có hai loi:  
z Lp(iterative)  
z Đồng thi (concurrent).  
Hai dng giao thc chương trình server:  
z Connection-oriented  
z Connectionless.  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 5  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
THIT KGII THUT CLIENT/SERVER  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 6  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
THIT KGII THUT CLIENT/SERVER  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 7  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
THIT KGII THUT CLIENT/SERVER  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 8  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
THIT KGII THUT CLIENT/SERVER  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 9  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
THIT KGII THUT CLIENT/SERVER  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 10  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
THIT KGII THUT CLIENT/SERVER  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 11  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
LP TRÌNH MNG TRÊN JAVA  
z Gói java.net  
InetAddress  
Socket  
URL  
URLConnection  
DatagramSocket  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 12  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
LP TRÌNH MNG TRÊN JAVA  
z InetAddress class  
Class mô tvề địa chIP (Internet Protocol)  
Các phương thc getLocalHost, getByName, hay  
getAllByName để to mt InetAddress instance:  
z public static InetAddess InetAddress.getByName(String hostname)  
z public static InetAddess [] InetAddress.getAllByName(String  
hostname)  
z public static InetAddess InetAddress.getLocalHost()  
Để ly địa chIP hay tên dùng các phương thc:  
z getHostAddress()  
z getHostName()  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 13  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
LP TRÌNH MNG TRÊN JAVA  
z In địa chIP ca localhost  
import java.net.*;  
public class HostInfo {  
p
H
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");  
}
}
}
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 14  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
LP TRÌNH MNG TRÊN JAVA  
z In địa chIP 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");  
}
}
}
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 15  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
LP TRÌNH MNG TRÊN JAVA  
z Các chương trình đọc thêm  
To mt địa chIP tmng byte, chui String.  
Cho mt địa chtìm tên máy.  
z ReverseTest.java  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 16  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
LP TRÌNH MNG TRÊN JAVA  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 17  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
LP TRÌNH MNG TRÊN JAVA  
z Socket class  
Class mô tvsocket  
z Socket(InetAddress address, int port)  
z Socket(String host, int port)  
z Socket(InetAddress address, int port, InetAddress, localAddr, int  
localPort)  
z Socket(String host, int port, InetAddress, localAddr, int localPort)  
z Socket()  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 18  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
LP TRÌNH MNG TRÊN JAVA  
z Socket class (tiếp theo)  
Ly thông tin vmt socket  
z InetAddress getInetAddress() : trvề địa chmà socket kết ni  
đến.  
z int getPort() : trvề địa chmà socket kết ni đến.  
z InetAddress getLocalAddress() : trvề địa chcc b.  
z int getLocalPort() : trvề địa chcc b.  
Sdng Streams  
z public OutputStream getOutputStream() throws IOException  
Trvmt output stream cho vic viết các byte đến socket này.  
z public InputStream getInputStream() throws IOException  
Trvmt input stream cho vic đọc các byte tsocket này.  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 19  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
LP TRÌNH MNG TRÊN JAVA  
z Kết ni đên 1 swebserver  
import java.net.*;  
import java.io.*;  
p
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());  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 20  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
LP TRÌNH MNG TRÊN JAVA  
z Kết ni đên 1 swebserver (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  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 21  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
LP TRÌNH MNG TRÊN JAVA  
z ServerSocket class  
Class mô tvServerSocket  
z ServerSocket(int port) throws IOException  
z ServerSocket(int port, int backlog) throws IOException  
z ServerSocket(int port, int backlog, InetAddress bindAddr) throws  
IOException  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 22  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
LP TRÌNH MNG TRÊN JAVA  
z ServerSocket class  
Các phương thc trong ServerSocket  
z Socket accept() throws IOException : Lng nghe mt kết ni đến  
socket này và chp nhn nó.  
z void close() throws IOException : Đóng socket.  
z InetAddress getInetAddress() : trvề địa chcc bca socket  
z int getLocalPort() : Trvport mà server đang lng nghe.  
z void setSoTimeout(int timeout) throws SocketException  
z Enable/disable SO_TIMEOUT vi khai báo timeout (milliseconds)  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 23  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
LP TRÌNH MNG TRÊN JAVA  
z DateTime Server  
import java.net.*;  
import java.io.*;  
im
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);  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 24  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
LP TRÌNH MNG TRÊN JAVA  
z 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);  
}
}
}
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 25  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
LP TRÌNH SOCKET VI UDP  
z Cung cp cơ chế truyn không tin cy gia các nhóm  
các byte (datagrams) gia client và server.  
z Không cn thiết lp kết ni gia client và server.  
z Sender phi gi kèm địa chIP và port đích  
z Server khi nhn dliu sphân tích địa chca  
sender để truyn li.  
z Có thserver chp nhn nhiu client ti mt thi  
đim.  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 26  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
LP TRÌNH SOCKET VI UDP  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 27  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
VÍ D(UDP Client)  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 28  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
VÍ D(UDP Client)  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 29  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
VÍ D(UDP Server)  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 30  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
VÍ D(UDP Server)  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 31  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
LP TRÌNH SOCKET VI TCP  
z Server  
Server process phi chy trước.  
Server phi to mt socket để lng nghe và chp nhn các kết ni từ  
z Client  
Khi to TCP socket.  
Xác định IP address, port number ca server.  
Thiết lp kết ni đến server.  
z Khi server nhn yêu cu kết ni, nó schp nhn yêu cu và  
khi to socket mi để giao tiếp vi client.  
Có thserver chp nhn nhiu client ti mt thi đim.  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 32  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
LP TRÌNH SOCKET VI TCP  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 33  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
VÍ D(TCP Client)  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 34  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
VÍ D(TCP Client tiếp theo)  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 35  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
VÍ D(TCP Server)  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 36  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
VÍ D(TCP Server – tiếp theo)  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 37  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
BÀI TP  
z Viết chương trình trên Java/C tương tnhư  
nslookup:  
Cho 1 địa chIP tìm ra tên.  
Giao din tương tnhư sau:  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 38  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
BÀI TP  
z Viết chương trình echo client trên Java.  
echo : 7/tcp, 7/udp.  
z Viết chương trình finger client trên Java.  
Finger: 79/tcp.  
z Viết chương trình echo server trên Java.  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 39  
Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM  
LP TRÌNH SOCKET TRÊN UNIX  
Primitives  
Meaning  
SOC
BIND  
Attach a local address to a socket  
LISTEN  
ACCEPT  
Announce willingness to accept connections; give queue size  
Block the caller until connection attempt arrives  
CONNECT Actively attempt to establish a connection  
SEND  
RECEIVE  
CLOSE  
Send some data over the connection  
Receive some data from the connection  
Release the connection  
Baûn quyeàn ®2005- Khoa Coâng Ngheä Thoâng Tin  
Trang 40  
Tải về để xem bản đầy đủ
pdf 35 trang Thùy Anh 12/05/2022 2140
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình mạng - Chương 1: Lập trình mạng dùng Socket - Nguyễn Cao Đạt", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_lap_trinh_mang_chuong_1_lap_trinh_mang_dung_socket.pdf