Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 35 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
35
Dung lượng
696,37 KB
Nội dung
Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 1 Trường Đại Học Bách Khoa Tp.HCM CHƯƠNG 1 LẬP TRÌNH MẠNG DÙNG SOCKET Trường Đại Học Bách Khoa Tp.HCM Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 2 KHÁI NIỆM VỀ SOCKET z Socket API – Ðượcgiớithiệu ở BSD4.1 UNIX, 1981 – Ðược ứng dụng khởitạo, sử dụng và hủybỏ. – Dùng cơ chế client/server – Cung cấphaidịch vụ chuyểndữ liệuthơngqua socket API: • unreliable datagram • reliable, byte stream-oriented Trường Đại Học Bách Khoa Tp.HCM Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 3 KHÁI NIỆM VỀ SOCKET Trường Đại Học Bách Khoa Tp.HCM Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 4 THIẾT KẾ GIẢI THUẬT CLIENT/SERVER z Thiếtkế giảithuật cho client – Giảithuậtchochương trình client dùng UDP z Xác định địachỉ server. z Tạo socket. z Gởi/nhậndữ liệutheogiaothứclớp ứng dụng đãthiếtkế. z Đóng socket. – Giảithuậtchochương trình client dùng TCP z Xác định địachỉ server z Tạo socket. z Kếtnối đếnserver. z Gởi/nhậndữ liệutheogiaothứclớp ứng dụng đãthiếtkế. z Đóng kếtnối. Trường Đại Học Bách Khoa Tp.HCM Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 5 THIẾT KẾ GIẢI THUẬT CLIENT/SERVER z Thiếtkế giảithuật cho Server – Chương trình server có hai loại: z Lặp(iterative) z Đồng thời (concurrent). – Hai dạng giao thứcchương trình server: z Connection-oriented z Connectionless. Trường Đại Học Bách Khoa Tp.HCM Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 6 THIẾT KẾ GIẢI THUẬT CLIENT/SERVER Trường Đại Học Bách Khoa Tp.HCM Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 7 THIẾT KẾ GIẢI THUẬT CLIENT/SERVER Trường Đại Học Bách Khoa Tp.HCM Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 8 THIẾT KẾ GIẢI THUẬT CLIENT/SERVER Trường Đại Học Bách Khoa Tp.HCM Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 9 THIẾT KẾ GIẢI THUẬT CLIENT/SERVER Trường Đại Học Bách Khoa Tp.HCM Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 10 THIẾT KẾ GIẢI THUẬT CLIENT/SERVER Trường Đại Học Bách Khoa Tp.HCM Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 11 THIẾT KẾ GIẢI THUẬT CLIENT/SERVER Trường Đại Học Bách Khoa Tp.HCM Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 12 LẬP TRÌNH MẠNG TRÊN JAVA z Gói java.net – InetAddress – ServerSocket – Socket – URL – URLConnection – DatagramSocket Trường Đại Học Bách Khoa Tp.HCM Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 13 LẬP TRÌNH MẠNG TRÊN JAVA z InetAddress class – Class mơ tả vềđịachỉ IP (Internet Protocol) – Các phương thức getLocalHost, getByName, hay getAllByName để tạomột InetAddress instance: z public static InetAddess InetAddress.getByName(String hostname) z public static InetAddess [] InetAddress.getAllByName(String hostname) z public static InetAddess InetAddress.getLocalHost() – Để lấy địachỉ IP hay tên dùng các phương thức: z getHostAddress() z getHostName() Trường Đại Học Bách Khoa Tp.HCM Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 14 LẬP TRÌNH MẠNG TRÊN JAVA z In địachỉ IP củalocalhost 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 Đại Học Bách Khoa Tp.HCM Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 15 LẬP TRÌNH MẠNG TRÊN JAVA z In địachỉ 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 Đại Học Bách Khoa Tp.HCM Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 16 LẬP TRÌNH MẠNG TRÊN JAVA z Các chương trình đọcthêm – Tạomột địachỉ IP từ mảng byte, chuỗi String. z InetAddressFactory.java – Cho một địachỉ tìm tên máy. z ReverseTest.java Trường Đại Học Bách Khoa Tp.HCM Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 17 LẬP TRÌNH MẠNG TRÊN JAVA Trường Đại Học Bách Khoa Tp.HCM Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 18 LẬP TRÌNH MẠNG TRÊN JAVA z Socket class – Class mơ tả về socket – Tạomột socket 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() Trường Đại Học Bách Khoa Tp.HCM Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 19 LẬP TRÌNH MẠNG TRÊN JAVA z Socket class (tiếptheo) – Lấy thơng tin về một socket z InetAddress getInetAddress() : trả vềđịachỉ mà socket kếtnối đến. z int getPort() : trả vềđịachỉ mà socket kếtnối đến. z InetAddress getLocalAddress() : trả vềđịachỉ cụcbộ. z int getLocalPort() : trả vềđịachỉ cụcbộ. – Sử dụng Streams z public OutputStream getOutputStream() throws IOException Trả về một output stream cho việcviếtcácbyte đến socket này. z public InputStream getInputStream() throws IOException Trả về một input stream cho việc đọc các byte từ socket này. Trường Đại Học Bách Khoa Tp.HCM Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 20 LẬP TRÌNH MẠNG TRÊN JAVA z Kếtnố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 Tp.HCM LẬP TRÌNH MẠNG 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 Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 22 Trường Đại Học Bách Khoa Tp.HCM LẬP TRÌNH MẠNG TRÊN JAVA ServerSocket class... Tin Trường Đại Học Bách Khoa Tp.HCM LẬP TRÌNH SOCKET VỚI TCP SERVER CLIENT socket( ) socket( ) bind() listen() connect() send()/receive() close() connection request data accept() newsocket send()/receive() close(newsocket) close(mainsocket) Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 54 Trường Đại Học Bách Khoa Tp.HCM LẬP TRÌNH SOCKET VỚI TCP CLIENT SERVER socket( ) socket( ) bind() connection request... Tin Trường Đại Học Bách Khoa Tp.HCM LẬP TRÌNH SOCKET VỚI UDP SERVER CLIENT socket( ) socket( ) bind() sendto() receivefrom() close() data data receivefrom() client address sendto() close() Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 52 Trường Đại Học Bách Khoa Tp.HCM LẬP TRÌNH SOCKET VỚI UDP socket( ) socket( ) bind() data sendto() receivefrom() close() client address socket( ) receivefrom() sento()/receivefrom(... 42 Trường Đại Học Bách Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Hàm socket int socket( int domain, int type, int protocol); Trong đó: – – – domain : họ địa chỉ, thường sử dụng là AF_INET type : Kiểu socket (SOCK_STREAM, SOCK_DGRAM, …) protocol : giao thức được dùng, default = 0 Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 43 Trường Đại Học Bách Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Bản quyền ®2005-... Bách Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Một so sánh tương tự – – – – – – – socket: Điện thoại bind: Gán một số cho điện thoại listen: Bật chế độ chng connect: quay số accept: trả lời điện thoại read/write: nói chuyện close: kết thúc Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 41 Trường Đại Học Bách Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Để gởi – socket, connect, write Để nhận – socket, bind, listen,... 44 Trường Đại Học Bách Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Ví dụ (ex1.c) #include #include int main(void) { int sockfd; if ((sockfd = socket( AF_INET, SOCK_STREAM, 0)) == -1) { perror( "socket" ); exit(1); } printf("Sockfd : %d \n", sockfd); } Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 45 Trường Đại Học Bách Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Hàm bind int bind(int... Bách Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 62 Trường Đại Học Bách Khoa Tp.HCM LẬP TRÌNH SOCKET VỚI TCP DateTime Server #include #include int main (int argc, char **argv) { int listenfd, connfd; struct sockaddr_in servaddr, cliaddr; char buff[MAXLINE]; time_t ticks; /* Create a TCP socket */ listenfd = socket (AF_INET, SOCK_STREAM,... Tin Trang 31 Trường Đại Học Bách Khoa Tp.HCM LẬP TRÌNH 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 các kết nối từ client Client – – – Khởi tạo TCP socket Xác định IP address, port number của server Thiết lập kết nối đến server Khi server nhận u cầu kết nối, nó sẽ chấp nhận u cầu và khởi tạo socket mới để giao tiếp với client – Có thể... HTTP/1.0 404 File Not Found case 3: HTTP/1.0 501 Not Implemented Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 68 Trường Đại Học Bách Khoa Tp.HCM TỔNG KẾT Khái niệm socket Thiết kế giải thuật cho client và server Lập trình mạng trên Java Lập trình socket trên UNIX Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 69 ... Thông Tin Trang 23 Trường Đại Học Bách Khoa Tp.HCM LẬP TRÌNH MẠNG 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); Bản quyền ®2005- Khoa Công Nghệ . Trang 17 LẬP TRÌNH MẠNG TRÊN JAVA Trường Đại Học Bách Khoa Tp.HCM Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 18 LẬP TRÌNH MẠNG TRÊN JAVA z Socket class – Class mơ tả về socket – Tạomột socket z. Thông Tin Trang 22 LẬP TRÌNH MẠNG TRÊN JAVA z ServerSocket class – Class mơ tả về ServerSocket – Tạomột ServerSocket z ServerSocket(int port) throws IOException z ServerSocket(int port, int. Học Bách Khoa Tp.HCM CHƯƠNG 1 LẬP TRÌNH MẠNG DÙNG SOCKET Trường Đại Học Bách Khoa Tp.HCM Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 2 KHÁI NIỆM VỀ SOCKET z Socket API – Ðượcgiớithiệu ở BSD4.1