BÀI GIẢNG LẬP TRÌNH MẠNG_CHƯƠNG 1 Lập trình dùng Socket pdf

35 463 2
BÀI GIẢNG LẬP TRÌNH MẠNG_CHƯƠNG 1 Lập trình dùng Socket pdf

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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()); [...]... 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... 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... 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(... 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... 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,... 61 Trường Đại Học 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. .. sockaddr *)&myaddr, sizeof myaddr)== -1) { perror("bind"); exit (1) ; } printf( "socket, bind \n"); myaddr.sin_family = AF_INET; myaddr.sin_port = htons(3490); // you can specify an IP address: //inet_aton("63 .16 1 .16 9 .13 7", &myaddr.sin_addr.s_addr); } Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 48 Trường Đại Học Bách Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Hàm listen int listen(int sockfd, int backlog);... Học Bách Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Ví dụ về các hàm inet_* struct sockaddr_in antelope; char *some_addr; inet_aton( "10 .0.0 .1" , &antelope.sin_addr); // store IP in antelope some_addr = inet_ntoa(antelope.sin_addr); printf("%s\n", some_addr); // prints "10 .0.0 .1" // and this call is the same as the inet_aton() call, above: antelope.sin_addr.s_addr = inet_addr( "10 .0.0 .1" ); Bản quyền ®2005-... UNIX Một số hàm chuyển đổi số uint32_t htonl(uint32_t hostlong); uint16_t htons(uint16_t hostshort); uint32_t ntohl(uint32_t netlong); uint16_t ntohs(uint16_t netshort); Bản quyền ®2005- Khoa Công Nghệ Thông Tin Trang 60 Trường Đại Học Bách Khoa Tp.HCM LẬP TRÌNH SOCKET TRÊN UNIX Ví dụ về các hàm chuyển đổi số uint32_t some_long = 10 ; uint16_t some_short = 20; uint32_t network_byte_order; // convert and . 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. 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 –. ®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

Ngày đăng: 22/07/2014, 01:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan