Mang NC
Câu 1 : Giới thiệu chung về giao thức WSDL 1
Câu 2,3,4: Giới thiệu về định dạng văn bản của giao thức WSDL 1
Câu 5,6,7: Giao thức SOAP (Simple Object Access Protocol) 3
Câu 8: Khái niệm về web service, mô hình, các thành phần : 5
Câu 9: Giới thiệu về XML 6
Câu 10, 11: URI và URL 14
Câu 12, 13, 14: Giao thức HTTP: 15
Câu 15: Lập trình Socket 8
Câu 16: Lập trình Socket các lệnh : 10
Câu 1 : Giới thiệu chung về giao thức WSDL
Là một trong các thành phần của dịch vụ web. WSDL định nghĩa cách mô tả dịch vụ web theo cú pháp tổng quản của XML bao gồm các thông tin sau :
Tên dịch vụ
Giao thức và kiểu mã hóa sẽ được sử dụng khi gọi các hàm của dịch vụ web
Loại thông tin: thao tác, tham số, những kiểu dữ liệu (Có thể là giao diện dịch vụ web cộng với tên của giao diện này)
Một WSDL hợp lệ gồm 2 phần: phần giao diện(mô tả giao diện và phương thức kết nối) và phần thi hành mô tả thông tin truy xuất CSDL. Cả hai phần này sẽ được lưu trong hai tập tin XML tương ứng là tập tin giao diện dịch vụ và tập tin thi hành dịch vụ. Giao diện của một dịch vụ web được mô tả ở phần này đưa ra cách thức làm thế nào để giao tiếp qua dịch vụ web. Tên, giao thức liên kết và định dạng thông điệp yêu cầu để tương tác với dịch vụ web được đưa vào thư mục của WSDL
WSDL thường được sử dụng kết hợp với XML schema và SOAP để cung cấp dịch vụ Web qua Internet. Một client khi kết nối tới dịch vụ Web có thể đọc WSDL để xác định những chức năng sẵn có trên server. Sau đó, client có thể sử dụng SOAP để lấy ra chức năng chính xác có trong WSDL.
Câu 2,3,4: Giới thiệu về định dạng văn bản của giao thức WSDL
Văn bản WSDL mô tả dịch vụ web bằng các phần tử sau :
Types : Kiểu dữ liệu mà web service sử dụng
Message: Thông điệp do web service sử dụng
PortType: các lệnh thực hiện bởi web sevice
Binding : Giao thức kết nối do web service sử dụng
Cấu trúc của văn bản WSDL :
<definitions>
<types>
Định nghĩa kiểu........
</types>
<message>
Định nghĩa thông điệp....
</message>
<portType>
Định nghĩa cổng .......
</portType>
<binding>
Định nghĩa ràng buộc....
</binding>
</definitions>
<Types>
cung cấp định nghĩa các kiểu dữ liệu được sử dụng ở các thông điệp. Các định nghĩa kiểu dữ liệu thường được viết trong hệ thống XSD(extensible schema definition).
Ví dụ :
• Sử dụng 1 XSD bên ngoài
• <types>
• <xsd:schema>
• <xsd:import namespace="http://eg/" schemaLocation="HelloService_schema1.xsd" />
• </xsd:schema>
• </types>
• Nếu không có kiểu nào được định nghĩa trong type:
• <types />
<Message>
Định nghĩa các thông điệp sử dụng trong web service. Thứ tự của các message phản ánh cách hoạt động của web service: request/response hay solicit/response.
Tên của các message có dạng ---In/---Out; ---Request/---Response với '---' phản ảnh operation liên kết với message.
<PortType>
biểu diễn dịch vụ như là một tập named operation, mỗi operation được mô tả bởi các input/output message . Nó giống như là một interface trong ngôn ngữ Java: cho biết các operation và message nhưng không cho biết cài đặt bên trong.
<portType>
{ <operation>
<input message="...">
<output message="...">
</operation>}
</portType>
Phần "..." là một datatype trong một namespace nào đó. Phần trong {} được lặp lại nhiều lần và trong các element có nhiều attribute.
<Binding>
Mô tả các chi tiết rõ ràng của web service. Nó giống như là lớp cài đặt một interface trong Java.
<binding>
<soap:binding ... />
{<operation>
<soap:operation ... />
<input>
<soap:input>
</input>
<output>
<soap:output>
</output>
</operation> }
</binding>
<Service>
Định nghĩa một hoặc nhiều endpoint mà service hoạt động. Một endpoint được mô tả là một URL mà các message có thể gửi tới để mà sử dụng dịch vụ. Service sẽ liệt kê một hoặc nhiều port, mỗi port gồm một portType (interface) và một binding(implementation).
<service name="...">
<port name="..." binding="...">
<soap:address location="..." />
</port>
</service>
Thuật ngữ 'port' là lấy từ giao thức TCP, trong đó, một kết nối được mô tả bởi một cặp <IPAddress, PortNumber>, mỗi port tại một IPAdress sẽ phục vụ một dịch vụ nhất định.
Câu 5,6,7: Giao thức SOAP (Simple Object Access Protocol)
SOAP là một giao thức giao tiếp có cấu trúc như XML. Nó được xem là cấu trúc xương sống của các ứng dụng phân tán được xây dựng từ nhiều ngôn ngữ và các hệ điều hành khác nhau. SOAP là giao thức thay đổi các thông điệp dựa trên XML qua mạng máy tính, thông thường sử dụng giao thức HTTP.
Một client sẽ gửi thông điệp yêu cầu tới server và ngay lập tức server sẽ gửi những thông điệp trả lời tới client. Cả SMTP và HTTP đều là những giao thức ở lớp ứng dụng của SOAP nhưng HTTP được sử dụng và chấp nhận rộng rãi hơn bởi ngày nay nó có thể làm việc rất tốt với cơ sở hạ tầng Internet.
Cấu trúc một thông điệp theo dạng SOAP
Thông điệp theo định dạng SOAP là một văn bản XML bình thường bao gồm các phần tử sau:
- Phần tử gốc - envelop: phần tử bao trùm nội dung thông điệp, khai báo văn bản XML như là một thông điệp SOAP.
- Phần tử đầu trang - header: chứa các thông tin tiêu đề cho trang, phần tử này không bắt buộc khai báo trong văn bản. Header còn có thể mang những dữ liệu chứng thực, những chứ ký số, thông tin mã hóa hay cài đặt cho các giao dịch khác.
- Phần tử khai báo nội dung chính trong thông điệp - body, chứa các thông tin yêu cầu và thông tin được phản hồi.
- Phần tử đưa ra các thông tin về lỗi -fault, cung cấp thông tin lỗi xảy ra trong qúa trình xử lý thông điệp.
Một SOAP đơn giản trong body sẽ lưu các thông tin về tên thông điệp, tham chiếu tới một thể hiện của dịch vụ, một hoặc nhiều tham số. Có 3 kiểu thông báo sẽ được đưa ra khi truyền thông tin: request message(tham số gọi thực thi một thông điệp), respond message (các tham số trả về, được sử dụng khi yêu cầu được đáp ứng) và cuối cùng là fault message (thông báo tình trạng lỗi).
Kiểu truyền thông: Có 2 kiểu truyền thông
- Remote procedure call (RPC): cho phép gọi hàm hoặc thủ tục qua mạng. Kiểu này được khai thác bởi nhiều dịch vụ Web.
- Document: được biết đến như kiểu hướng thông điệp, nó cung cấp giao tiếp ở mức trừu tượng thấp, khó hiểu và yêu cầu lập trình viên mất công sức hơn.
Hai kiểu truyền thông này cung cấp các định dạng thông điệp, tham số, lời gọi đến các API khác nhau nên việc sử dụng chúng tùy thuộc vào thời gian và sự phù hợp với dịch vụ Web cần xây dựng.
Cấu trúc dữ liệu: Cung cấp những định dạng và khái niệm cơ bản giống như trong các ngôn ngữ lập trình khác như kiểu dữ liệu (int, string, date...) hay những kiều phức tạp hơn như struct, array, vector... Định nghĩa cấu trúc dữ liệu SOAP được đặt trong namespace SOAP-ENC.
Mã hóa: Giả sử service rquester và service provider được phát triển trong Java, khi đó mã hóa SOAP là làm thế nào chuyển đổi từ cấu trúc dữ liệu Java sang SOAP XML và ngược lại, bởi vì định dạng cho Web Service chính là XML. Bất kỳ một môi trường thực thi SOAP nào cũng phải có một bảng chứa thông tin ánh xạ nhằm chuyển đổi từ ngôn ngữ Java sang XML và từ XML sang Java - bảng đó được gọi là SOAPMappingRegistry. Nếu một kiểu dữ liệu được sử dụng dưới một dạng mã hóa thì sẽ có một ánh xạ tồn tại trong bộ đăng ký của môi trường thực thi SOAP đó.
Câu 8: Khái niệm về web service, mô hình, các thành phần :
Khái niệm : dịch vụ Web là một hệ thống phần mềm được thiết kế để hỗ trợ khả năng tương tác giữa các ứng dụng trên các máy tính khác nhau thông qua mạng Internet, giao diện chung và sự gắn kết của nó được mô tả bằng XML. Dịch vụ Web là tài nguyên phần mềm có thể xác định bằng địa chỉ URL, thực hiện các chức năng và đưa ra các thông tin người dùng yêu cầu. Một dịch vụ Web được tạo nên bằng cách lấy các chức năng và đóng gói chúng sao cho các ứng dụng khác dễ dàng nhìn thấy và có thể truy cập đến những dịch vụ mà nó thực hiện, đồng thời có thể yêu cầu thông tin từ dịch vụ Web khác. Nó bao gồm các mô đun độc lập cho hoạt động của khách hàng và doanh nghiệp và bản thân nó được thực thi trên server.
Mô hình :
Dịch vụ Web gồm có 3 chuẩn chính: SOAP (Simple Object Access Protocol), WSDL (Web Service Description Language) và UDDI (Universal Description, Discovery, and Integration). Hình 1 mô tả chồng giao thức của dịch vụ Web, trong đó UDDI được sử dụng để đăng ký và khám phá dịch vụ Web đã được miêu tả cụ thể trong WSDL. Giao tác UDDI sử dụng SOAP để nói chuyện với UDDI server, sau đó các ứng dụng SOAP yêu cầu một dịch vụ Web. Các thông điệp SOAP được gửi đi chính xác bởi HTTP và TCP/IP.
Chồng giao thức dịch vụ Web là tập hợp các giao thức mạng máy tính được sử dụng để định nghĩa, xác định vị trí, thi hành và tạo nên dịch vụ Web tương tác với những ứng dụng hay dịch vụ khác. Chồng giao thức này có 4 thành phần chính:
- Dịch vụ vận chuyển (Service Transport): có nhiệm vụ truyền thông điệp giữa các ứng dụng mạng, bao gồm những giao thức như HTTP, SMTP, FTP, JSM và gần đây nhất là giao thức thay đổi khổi mở rộng (Blocks Extensible Exchange Protocol- BEEP).
- Thông điệp XML: có nhiệm vụ giải mã các thông điệp theo định dạng XML để có thể hiểu được ở mức ứng dụng tương tác với người dùng. Hiện tại, những giao thức thực hiện nhiệm vụ này là XML-RPC, SOAP và REST.
- Mô tả dịch vụ: được sử dụng để miêu tả các giao diện chung cho một dịch vụ Web cụ thể. WSDL thường được sử dụng cho mục đích này, nó là một ngôn ngữ mô tả giao tiếp và thực thi dựa trên XML. Dịch vụ Web sẽ sử dụng ngôn ngữ này để truyền tham số và các loại dữ liệu cho các thao tác và chức năng mà dịch vụ Web cung cấp.
- Khám phá dịch vụ: tập trung dịch vụ vào trong một nơi được đăng ký, từ đó giúp một dịch vụ Web có thể dễ dàng khám phá ra những dịch vụ nào đã có trên mạng, tốt hơn trong việc tìm kiếm những dịch vụ khác để tương tác. Một dịch vụ Web cũng phải tiến hành đăng ký để các dịch vụ khác có thể truy cập và giao tiếp. Hiện tại, UDDI API thường được sử dụng để thực hiện công việc này.
Các thành phần :
a) XML - eXtensible Markup Language
Là một chuẩn mở do W3C đưa ra cho cách thức mô tả dữ liệu, nó được sử dụng để định nghĩa các thành phần dữ liệu trên trang web và cho những tài liệu B2B.
b) WSDL - Web Service Description Language
WSDL định nghĩa cách mô tả dịch vụ Web theo cú pháp tổng quát của XML
c) Universal Description, Discovery, and Integration (UDDI)
Để có thể sử dụng các dịch vụ, trước tiên client phải tìm dịch vụ, ghi nhận thông tin về cách sử dụng và biết được đối tượng nào cung cấp dịch vụ. UDDI định nghĩa một số thành phần cho biết các thông tin này, cho phép các client truy tìm và nhận những thông tin được yêu cầu khi sử dụng dịch vụ Web.
d) SOAP - Simple Object Access Protocol
SOAP là một giao thức giao tiếp có cấu trúc như XML. Nó được xem là cấu trúc xương sống của các ứng dụng phân tán được xây dựng từ nhiều ngôn ngữ và các hệ điều hành khác nhau. SOAP là giao thức thay đổi các thông điệp dựa trên XML qua mạng máy tính, thông thường sử dụng giao thức HTTP.
Câu 9: Giới thiệu về XML
Là một chuẩn mở do W3C đưa ra cho cách thức mô tả dữ liệu, nó được sử dụng để định nghĩa các thành phần dữ liệu trên trang web và cho những tài liệu B2B. Về hình thức, XML hoàn toàn có cấu trúc thẻ giống như ngôn ngữ HTML nhưng HTML định nghĩa thành phần được hiển thị như thế nào thì XML lại định nghĩa những thành phần đó chứa cái gì. Với XML, các thẻ có thể được lập trình viên tự tạo ra trên mỗi trang web và được chọn là định dạng thông điệp chuẩn bởi tính phổ biến và hiệu quả mã nguồn mở.
Do dịch vụ Web là sự kết hợp của nhiều thành phần khác nhau nên nó sử dụng các tính năng và đặc trưng của các thành phần đó để giao tiếp. XML là công cụ chính để giải quyết vấn đề này và là kiến trúc nền tảng cho việc xây dựng một dịch vụ Web, tất cả dữ liệu sẽ được chuyển sang định dạng thẻ XML. Khi đó, các thông tin mã hóa sẽ hoàn toàn phù hợp với các thông tin theo chuẩn của SOAP hoặc XML-RPC và có thể tương tác với nhau trong một thể thống nhất.
Cấu trúc một tài liệu XML
Tài liệu XML chỉ chứa đựng dữ liệu và cách lưu trữ dữ liệu mà không hề đề cập tới cách thức trình bày dữ liệu. Một tài liệu XML sẽ chứa những đặc tả về cấu trúc dữ liệu. Mỗi cấu trúc gồm nhiều phần tử (element), mỗi thành phần được bắt đầu với một thẻ bắt đầu (Start-tag) và kết thúc với một thẻ kết thúc (End-tag). Giữa Start-tag và End-tag là nội dung của phần tử này. Nội dung có thể bao gồm dữ liệu văn bản hay có thể là một phần tử khác. Dưới đây là một file XML:
Code:
<?xml version="1.0"?>
<Catalog>
<Product>
<ProductID>F10</ProductID>
<ProductName>Shimano Calcutta </ProductName>
<ListPrice>47.76</ListPrice>
</Product>
<Product>
<ProductID>F20</ProductID>
<ProductName>Bantam Lexica</ProductName>
<ListPrice>49.99</ListPrice>
</Product>
</Catalog>
Một tài liệu HTML có thể tồn tại một số thẻ không đúng quy định (trình biên dịch sẽ bỏ qua những thẻ này). Tuy nhiên với một tài liệu XML thì điều này không thể xảy ra. Khi xây dựng một tài liệu XML, nó phải tuân thủ theo một số quy luật nào đó. Những tài liệu XML tuân thủ đúng những quy luật này được gọi là well-formed (tạm dịch là định dạng đúng). Với một tài liệu không phải là well-formed, Internet Explorer sẽ thông báo lỗi khi nạp tài liệu này.
Một tài liệu XML well-formed chưa chắc là một tài liệu hợp lệ. Một tài liệu XML được xem là hợp lệ nếu nó đảm bảo những quy tắc đặc tả trong tài liệu Document Type Definition (DTD) hay giản đồ (schema). Một DTD hay schema sẽ định nghĩa mọi thứ từ cấu trúc dữ liệu tới kiểu dữ liệu, những thuộc tính được yêu cầu, và những ràng buộc về thành phần và thuộc tính được kết hợp trong tài liệu. Phương thức kiểm tra tài liệu này thường được sử dụng trong giao tiếp giữa ứng dụng - ứng dụng, đảm bảo dữ liệu trao đổi hợp lệ tránh dẫn tới những ảnh hưởng của dữ liệu không hợp lệ trên toàn hệ thống.
Câu 15: Lập trình Socket
Như chúng ta đã biết mỗi máy tính muốn giao tiếp với nhau cần phải có một địa chỉ duy nhất mà hiện nay thường đựoc dùng là điạ chỉ IP. (DNS thực chất cũng sẽ được chuyển thành địa chỉ IP). Với địa chỉ IP, chúng ta có thể xác định ra một máy tính duy nhất trên mạng, tuy nhiên khi một máy tính chạy nhiều chuơng trình, thì các chương trình đó được phân biệt với nhau bởi khái niệm Port (Chả hạn như dịch vụ web dùng Port 80, dịch vụ truyền nhận file dung Port 21, dịch vụ DNS sử dụng Port 53). Vì thế muốn truy cập được tới một dịch vụ cụ thể chúng ta phải kết hợp cả địa chỉ IP và Port. Như vậy chúng ta có thể hiểu Socket là một cửa kết nối giữa các tiến trình trên các máy tính khác nhau (hoặc cũng có thể ở cùng một máy)thông qua địa chỉ IP và Port
Định nghĩa: Socket là một phương pháp để thiết lập kết nối truyền thông giữa một chương trình yêu cầu dịch vụ ( client) và một chương trình cung cấp dịch vụ (server) trên mạng LAN, WAN hay Internet và đôi lúc là giữa những quá trình ngay bên trong máy tính. Mỗi socket có thể được xem như một điểm cuối trong một kết nối. Một socket trên máy yêu cầu dịch vụ có địa chỉ mạng được cấp sẵn để "gọi" một socket trên máy cung cấp dịch vụ. Một khi socket đã được thiết lập phù hợp, hai máy tính có thể trao đổi dịch vụ và dữ liệu.
Socket được coi như là một giao diện nằm giữa tầng ứng dụng và các tầng khác trong mạng OSI với nhiệm vụ thực thi giao tiếp giữa các chương trình ứng dụng với các tầng bên dưới của mạng.
Application
(HTTP,FTP, TELNET)
Socket
Transport
(TCP, UDP)
Network
(IP, ARP, ICRP)
Network Interface
Các ngôn ngữ lập trình hiện nay đều có thu viện lập trình mạng rất mạnh (C#, C++, Java..) và thường có thư viện Socket. Nó sẽ cung cấp rất nhiều hàm hữu ích để tiến hành lập trình.
Nguyên lý chung
Về tổng quan quá trình hoạt động để trao đổi dữ liệu thông qua Socket có thể được mô tả như sau :
Chương trình phía Server tạo một Socket, Socket này được chương trình gắn với một cổng (Port) trên Server. Khi đã được tạo Socket sẽ chờ yêu cầu từ phía Client
Khi chương trình phía Client cần kết nối tới Server, nó sẽ tạo ra một Socket, Socket này cũng được hệ điều hành gắn với một cổng. Chương trình phía Client sẽ cung cấp cho Socket của nó địa chỉ mạng và cổng của Socket phía Server và yêu cầu được thưc hiện kết nối (nếu dùng TCP) hoặc truyền dữ liệu ngay (nếu dùng UDP)
Chương trình phía Server và Client trao đổi dữ liệu với nhau bằng cách đọc từ Socket và ghi vào Socket của mình. Các Socket ở hai phía nhận dữ liệu từ tầng ứng dụng và đóng gói để gửi đi hoặc nhận các dữ liệu từ ứng dụng và chuyển cho chương trình ứng dụng bởi các Socket ở cả hai phía đều biết địa chỉ mạng và địa chỉ cổng của nha
Mô hình hoạt động Client & Server theo giao thức TCP
Mô hình hoạt động Client & Server theo giao thức UDP:
Cái này tự nhìn hình rồi giải thick >:)
Câu 16: Lập trình Socket các lệnh :
Lập trình socket cho giao thức TCP :
Mô hình truyền tin :
Client
Socket(String host, int port) : Hàm này tạo một socket TCP với host và cổng xác định, và thực hiện liên kết với host ở xa.
Socket(InetAddress host, int port): tạo một socket TCP với thông tin là địa chỉ của một host được xác định bởi một đối tượng InetAddres và số hiệu cổng port, sau đó nó thực hiện kết nối tới host.
Socket (String host, int port, InetAddress interface, int localPort): tạo ra một socket với thông tin là địa chỉ IP được biểu diễn bởi một đối tượng String và một số hiệu cổng và thực hiện kết nối tới host đó. Socket kết nối tới host ở xa thông qua một giao tiếp mạng và số hiệu cổng cục bộ được xác định bởi hai tham số sau. Nếu localPort bằng 0 thì Java sẽ lựa chọn một cổng ngẫu nhiên có sẵn nằm trong khoảng từ 1024 đến 65535.
Socket (InetAddress host, int port, InetAddress interface, int localPort)
getInetAddress(): Cho trước một đối tượng Socket, phương thức getInetAddress() cho ta biết host ở xa mà Socket kết nối tới, hoặc liên kết đã bị ngắt thì nó cho biết host ở xa mà Socket đã kết nối tới
getPort(): Phương thức này cho biết số hiệu cổng mà Socket kết nối tới trên host ở xa.
getLocalPort(): Thông thường một liên kết thường có hai đầu: host ở xa và host cục bộ. Để tìm ra số hiệu cổng ở phía host cục bộ ta gọi phương thức getLocalPort().
getLocalAddress(): Phương thức này cho ta biết giao tiếp mạng nào mà một socket gắn kết với nó.
getInputStream(): Phương thức geInputStream() trả về một luồng nhập để đọc dữ liệu từ một socket vào chương trình. Thông thường ta có thể gắn kết luồng nhập thô InputStream tới một luồng lọc hoặc một luồng ký tự nhằm đưa các chức năng tiện ích (chẳng hạn như các luồng InputStream, hoặc InputStreamReader). Để tâng cao hiệu năng, ta có thể đệm dữ liệu bằng cách gắn kết nó với luồng lọc BufferedInputStream hoặc BufferedReader.
getOutputStream():Phương thức getOutputStream() trả về một luồng xuất thô để ghi dữ liệu từ ứng dụng ra đầu cuối của một socket. Thông thường, ta sẽ gắn kết luồng này với một luồng tiện lợi hơn như lớp DataOuputStream hoặc OutputStreamWriter trước khi sử dụng nó. Để tăng hiệu quả ghi.
Server
Vòng đời của một server
1. Một ServerSocket mới được tạo ra trên một cổng xác định bằng cách sử dụng một constructor ServerSocket.
2. ServerSocket lắng nghe liên kết đến trên cổng đó bằng cách sử dụng phương thức accept(). Phương thức accept() phong tỏa cho tới khi một client thực hiện một liên kết, phương thức accept() trả về một đối tượng Socket mà liên kết giữa client và server.
3. Tùy thuộc vào kiểu server, hoặc phương thức getInputStream(), getOutputStream() hoặc cả hai được gọi để nhận các luồng vào ra để truyền tin với client.
4. server và client tương tác theo một giao thức thỏa thuận sẵn cho tới khi ngắt liên kết.
5. Server, client hoặc cả hai ngắt liên kết
6. Server trở về bước hai và đợi liên kết tiếp theo.
ServerSocket(int port): một socket cho server trên cổng xác định. Nếu port bằng 0, hệ thống chọn một cổng ngẫu nhiên cho ta.
ServerSocket(int port, int queuelength, InetAddress bindAddress): tạo một đối tượng ServerSocket trên cổng xác định với chiều dài hàng đợi xác định. ServerSocket chỉ gán cho địa chỉ IP cục bộ xác định. Constructor này hữu ích cho các server chạy trên các hệ thống có nhiều địa chỉ IP.
Accept() : chấp nhận kết nối ví dụ : ServerSocket theServer = new ServerSocket(5776);
Socket con = theServer.accept();
Close(): Đóng kết nối
Lập trình socket cho giao thức UDP :
Trong giao thức UDP việc gửi giữ liệu được thực hiện bằng cách đóng gói giữ liệu thành các gói (DatagramePacket) có đầy đủ thông tin như địa chỉ đích, cổng, độ dài dữ liệu ...
Để gửi hoặc nhận một DatagramPacket, bạn phải mở một socket bằng lệnh DatagramSocket
DatagramSocket ds =new DatagramSocket(port): các datagram được gắn với một cổng cục bộ, cổng này được sử dụng để lắng nghe các datagram đến hoặc được đặt trên các header của các datagram sẽ gửi đi. Nếu ta viết một client thì không cần phải quan tâm đến số hiệu cổng cục bộ là bao nhiêu. DatagramSocket được sử dụng để gửi và nhận các gói tin UDP. Nó cung cấp các phương thức để gửi và nhận các gói tin
Close(): đóng một liên kết và giải phóng nó khỏi cổng cục bộ.
Connect(InetAddress remote_address, int remote_port):
GetInetAddress(): phương thức này trả về địa chỉ remote mà socket kết nối tới, hoặc giá trị null nếu không tồn tại liên kết.
GetLocalAddress(): trả về địa chỉ cục bộ
GetSoTimeOut(): trả về giá trị tùy chọn timeout của socket. Giá trị này xác định thời gian mà thao tác đọc sẽ phong tỏa trước khi nó đưa ra ngoại lệ InterruptedException. Ở chế độ mặc định, giá trị này bằng 0, chỉ ra rằng vào ra không phong tỏa được sử dụng.
Send(DatagramSocket dp) :phương thức gửi một gói tin
SetSoTimeOut(int timeout): thiết lập giá trị tùy chọn của socket.
GetPort(): Phương thức getPort() trả về một số nguyên xác định cổng trên host ở xa. Nếu datagram được nhận từ Internet thì cổng này là cổng trên host đã gửi gói tin đi.
SocketAddress(): Phương thức này trả về một đối tượng SocketAddress chứa địa chỉ IP và số hiệu cổng của host ở xa.
Byte[] getData(): Phương thức getData() trả về một mảng byte chứa dữ liệu từ datagram. Thông thường cần phải chuyển các byte này thành một dạng dữ liệu khác trước khi chương trình xử lý dữ liệu. Một cách để thực hiện điều này là chuyển đổi mảng byte thành một đối tượng String sử dụng constructor sau đây:
Nhận Datagram :
Hai constructor tạo ra các đối tượng DatagramSocket mới để nhận dữ liệu từ mạng:
• DatagramPacket(byte[] b, int length)
• DatagramPacket(byte[] b, int offset, int length)
Khi một socket nhận một datagram, nó lưu trữ phần dữ liệu của datagram ở trong vùng đệm b bắt đầu tại vị trí b[0] và tiếp tục cho tới khi gói tin được lưu trữ hoàn toàn hoặc cho tới khi lưu trữ hết length byte. Nếu sử dụng constructor thứ hai, thì dữ liệu được lưu trữ bắt đầu từ vị trí b[offset]. Chiều dài của b phải nhỏ hơn hoặc bằng b.length-offset. Nếu ta xây dựng một DatagramPacket có chiều dài vượt quá chiều dài của vùng đệm thì constructor sẽ đưa ra ngoại lệ IllegalArgumentException. Ví dụ, xây dựng một DatagramPacket để nhận dữ liệu có kích thước lên tới 8912 byte
byte b[]=new byte[8912];
DatagramPacket dp=new DatagramPacket(b,b.length);
Gửi Datagram:
Bốn constructor tạo các đối tượng DatagramPacket mới để gửi dữ liệu trên mạng:
• public DatagramPacket(byte[] b, int length, InetAddress dc, int port)
• public DatagramPacket(byte[] b, int offset, int length, InetAddress dc, int port)
• public DatagramPacket(byte[] b, int length, SocketAddress dc, int port)
• public DatagramPacket(byte[] b, int offset, int length, SocketAddress dc, int port)
Mỗi constructor tạo ra một DatagramPacket mới để được gửi đi tới một host khác. Gói tin được điền đầy dữ liệu với chiều dài là length byte bắt đầu từ vị trí offset hoặc vị trí 0 nếu offset không được sử dụng.
Câu 10, 11: URI và URL
URI (Uniform Resource Identifier) - Định danh tài nguyên thống nhất
Trong tin học, một Uniform Resource Identifier (URI trước đây gọi là Universal Resource Identifier) là một chuỗi ký tự được sử dụng để xác định một tên hoặc một tài nguyên trên Internet.
Ví dụ URI
Các ví dụ sau đây minh họa URI được sử dụng phổ biến.
ftp://binarycom/rfc/rfc1808.txt
- Giao thức ftp cho dịch vụ File Transfer Protocol
http://www.binary.com.vn/faq/part1.html
- Giao thức http, dịch vụ Hypertext Transfer Protocol
mailto:[email protected]
- Giao thức Mailto cho địa chỉ thư điện tử
ldap://[2001:db8::7]/c=GB?objectClass?one
news:comp.infosystems.www.servers.unix
tel:+1-816-555-1212
telnet://192.0.2.16:80/
urn:oasis:names:specification:docbook:dtd:xml:4.1.2
urn:example:animal:ferret:nose
URL (Uniform Resource Locator) - Địa chỉ tài nguyên mạng
URL là một loại của URI, cụ thể nó là một địa chỉ trên mạng, được dùng để tham chiếu tới tài nguyên trên Internet, URL là địa chỉ duy nhất cho một tập tin mà có thể truy cập trên Internet. URL mang lại khả năng siêu liên kết cho các trang mạng. Các tài nguyên khác nhau được tham chiếu tới bằng địa chỉ, chính là URL.
Một URL gồm có nhiều phần được liệt kê dưới đây:
• URL scheme thường là Tên giao thức (ví dụ: http, ftp) nhưng cũng có thể là một cái tên khác (ví du: news, mailto).
• Tên miền (ví dụ: vi.wikipedia.org)
• Chỉ định thêm cổng (có thể không cần)
• Đường dẫn tuyệt đối trên máy phục vụ của tài nguyên (ví dụ: thumuc/trang)
VD:
http://K57B.co.cc/index.html
ftp://binarycom.vn/abc.avi
udp://@225.1.1.75:30120
*** Sự khác biệt jữa URI và URL (sau 1 tgian ngâm kíu, Binary chỉ ra vài điều sau ;]])
- URL và URN là tập con của URI
- URN jống như tên người, tên đường phố, còn URL cung cấp phương thức, địa chỉ để tìm ra nó!
- Một số URI mà không phải là URL kiểu như file:///F:/PHP/abc.txt xác định file ở trên máy mình, bởi vì nó không xác định 1 giao thức mạng nào!
URI là URL có thêm phần truy vấn và các mục con
VD:
http://K57B.co.cc/baitap.php?id=5#phan_b
###Vai trò URI trong kiến trúc web
Một URI là một kí hiệu nhận dạng Web đơn giản. Cụ thể, nó là một xâu ngắn cho phép nhận dạng tài nguyên Web như: với các xâu bắt đầu với "http:" hoặc "ftp:" mà chúng ta thường thấy trên World Wide Web. Bất kỳ một người nào cũng có thể tạo một URI, và sở hữu chúng và chúng là một công nghệ cơ sở để xây dựng một hệ thống Web toàn cầu. Hệ thống World Wide Web được xây dựng trên chúng và bất kỳ cái gì mà có một URI thì được coi là "trên Web - Online".
Câu 12, 13, 14: Giao thức HTTP:
Ta có thể hiểu nôm na như sau: HTTP (Hypertext Transfer Protocol - Giao Thức Truyền Siêu Văn Bản).Một trong năm giao thức chuẩn về mạng Internet, được dùng để liên hệ thông tin giữa Máy cung cấp Dịch Vụ (Webserver) và Máy dùng dịch vụ (Client); là giao thức Client/Server dùng cho WWW, cung cấp cách để Web Browser truy xuất đến Web Server. Cơ cấu hoạt động là máy tính người dùng (end user - client) sẽ gửi 1 request đến sever(Website) thông qua 1 web browser (IE, FF). Sau đó sever - chứa các tài liệu, hình ảnh ta cần - sẽ xử lý request và trả lại kết quả về Client
Lịck sử fát chiển:
Phiên bản ban đầu của HTTP là HTTP/1.0, sau đó được sửa đổi thành HTTP/1.1. Một trong những tính đặc thù trong HTTP/1.0 là nó sử dụng một kết nối riêng biệt đến cùng một máy chủ cho mỗi tài liệu, trong khi HTTP/1.1 có thể dùng cùng một kết nối để tải về. Do đó HTTP/1.1 có thể nhanh hơn vì nó mất ít thời gian để tạo kết nối.
Việc phát triển các tiêu chuẩn của HTTP đã được điều phối bởi các tổ chức World Wide Web Consortium (W3C) và Internet Engineering Task Force (IETF), mà kết quả là đã công bố 1 loạt các Requests for Comments (RFC), đáng chú ý nhất là RFC 2616 (tháng 6 năm 1999), trong đó xác định HTTP/1.1 là phiên bản của HTTP được sử dụng phổ biến.
Tháng 3 năm 1996, HTTP/1.1 được hỗ trợ trong Netscape 2.0, Netscape Navigator Gold 2.01, Mosaic 2.7, Lynx 2.5, và trong Internet Explorer 3.0. Người sử dụng đã chấp nhận các trình duyệt mới 1 cách nhanh chóng.
Trong tháng 3 năm 1996, một trong những công ty lưu trữ web thông báo rằng hơn 40% các trình duyệt được sử dụng trên Internet hỗ trợ HTTP 1.1. Đến tháng sáu năm 1996, 65% các trình duyệt truy cập vào máy chủ của họ đã sử dụng HTTP/1.1. Chuẩn HTTP/1.1 theo quy định tại RFC 2068 đã chính thức được phát hành vào tháng 1 năm 1997. Cải tiến và cập nhật chuẩn HTTP/1.1 được phát hành theo RFC 2616 vào tháng 6 năm 1999.
Một khách hàng khởi tạo một yêu cầu HTTP. Nó thiết lập một kết nối Transmission Control Protocol (TCP) với 1 cổng trên một máy chủ (thường là cổng 80). Một server lắng nghe trên cổng đó, chờ yêu cầu của client. Khi nhận được yêu cầu, server sẽ gửi lại một dòng trạng thái, chẳng hạn như "OK HTTP/1.1 200", và một tin nhắn của riêng, có thể là nguồn tài nguyên yêu cầu, một thông báo lỗi, hoặc một số thông tin khác.
HTTP xác định tám phương pháp (đôi khi gọi là "động từ") cho thấy các hành động mong muốn được thực hiện trên các tài nguyên được xác định....Ở đêy, thày chỉ yêu cầu GET và POST!
GET: Lấy các tài liệu, tài nguyên được quy định trong URL
VD:
GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1
GET /images/logo.png HTTP/1.1
POST: Gửi dữ liệu đến server!
Bạn đang đọc truyện trên: AzTruyen.Top