Thứ Tư, 3 tháng 6, 2015

Giao tiếp client-Server trong C#

Các lớp .Net cơ bản trong lập trình mạng, học .net

Các lớp này được cung cấp trong hai namespace System.Net và System.Net.Sockets. Hai namespace này chứa rất nhiều lớp dùng trong lập trình mạng, nhưng trong phạm vi bài viết ta chỉ quan tâm đến các lớp sau::
ClassNamespaceDesciption
IPAddressSystem.NetProvides an Internet Protocol (IP) address.
IPEndPointSystem.NetRepresents a network endpoint as an IP address and a port number.
TcpListenerSystem.Net.SocketsListens for connections from TCP network clients.
SocketSystem.Net.SocketsImplements the Berkeley sockets interface.
TcpClientSystem.Net.SocketsProvides client connections for TCP network services.
NetworkStreamSystem.Net.SocketsProvides the underlying stream of data for network access.

Kết nối Server-Client với TCP/IP

Khi được chạy, server cần được xác định rõ địa chỉ IP và sẽ “lắng nghe” trên một port cụ thể. Server sẽ nằm trong trạng thái này cho đến khi client gửi đến một yêu cầu kết nối. Sau khi được server chấp nhận, một connection sẽ hình thành cho phép server và client giao tiếp với nhau.
Cụ thể hơn, các bước tiến hành trên server và client mà ta cần thực hiện sử dụng giao thức TCP/IP trong C# (có thể chạy server và client trên cùng một máy):
Server:
  1. Tạo một đối tượng System.Net.Sockets.TcpListener để bắt đầu “lắng nghe” trên một cổng cục bộ.
  2. Đợi và chấp nhận kết nối từ client với phương thức AccepSocket(). Phương thức này trả về một đối tượng System.Net.Sockets.Socket dùng để gửi và nhận dữ liệu.
  3. Thực hiện giao tiếp với client.
  4. Đóng Socket.
Thông thường quy trình này sẽ được đặt trong một vòng lặp (lặp lại bước 2) để chấp nhận nhiều kết nối cùng lúc (sử dụng Thread) hoặc các kết nối lần lượt.
Client:
  1. Tạo một đối tượng System.Net.Sockets.TcpClient
  2. Kết nối đến server với địa chỉ và port xác định với phương thức TcpClient.Connect()
  3. Lấy luồng (stream) giao tiếp bằng phương thức TcpClient.GetStream().
  4. Thực hiện giao tiếp với server.
  5. Đóng luồng và socket.
Quy trình này có thể được minh họa theo mô hình sau:
Nhiều bạn, khi tiến hành tích hợp các ứng dụng trong phần mềm: cho phép nhiều người dùng có thể trao đổi dữ liệu chat qua lại, truyền file với nhau luôn gặp rắc rồi, lý do là:
- Bạn phải xác định rõ phần mềm bạn viết sài đơn hay có 2 phiên bản server - client. Nhất thiết để làm tốt điều này, bạn cần tạo ra 1 ứng dụng server chạy liên tục trên website, có thể nó 1 dạng windows services chạy Console hay 1 dạng winform (tùy bạn). Tác dụng của ứng dụng Server là cửa ngõ trung gian, trung chuyển thông tin cho các client
 - Bạn phải có máy chủ (server): Thường thì các bạn viết ứng dụng chỉ đơn thuần là kết nối mọi phần mềm client lên thẳng Database trên server, điều này chỉ giải quyết được lưu trữ dữ liệu mà thôi. Nhất thiết bạn phải có 1 máy chủ ổn định, có quyền remote desktop để làm vài công việc
- Bạn tạo Port trên phiên bản server: Port này nhất định không được trùng với các Port mà server đang được sử dụng: chẳng hạn Port 80, Port này rất nhiều phần mềm đang sử dụng: Yahoo, Skype, Webbrowser, hay các Port đặc biệt: port SQL, port Remote, port FireWall của Windows
Đăng kí học & hỗ trợ: 0908.450.457 (Mr. Thanh) - Skype: thanhsoft.2009
Email: thanh.thanhsoft@gmail.com
Thanhsoft - Đào tạo lập trình C#, đào tạo lập trình web ASP.NET chất lượng cao và chuyên nghiệp

Không có nhận xét nào:

Đăng nhận xét