Lập trình mạng dùng Microsoft .NET

Tủ sách mở Wikibooks

Sách này sẽ hướng dẫn cách sử dụng Socket trong lập trình .NET. Lưu ý, tất cả các ví dụ trong bài viết này đều được trình bày bằng ngôn ngữ C Sharp (C#).

[sửa] Khái quát

Khái niệm socket có lẽ không lạ đối với các lập trình viên C++ nhưng có lẽ hơi mới đối với các lập trình viên Visual Basic là do ở VB, các lập trình viên đã được build sẵn một bộ thư viện mang tên "Winsock". Điều đó giúp các lập trình viên có thể thao tác và giao tiếp qua mạng dễ dàng hơn. Nhưng ở môi trường lập trình .NET thì khái niệm winsock không còn mà thay vào đó là khái niệm Socket. đó chính là những gì chúng ta sẽ nghiên cứu ở phía dưới.

[sửa] Nội dung chính

Trong .NET, để giao tiếp giữa các máy với nhau qua mạng, thì ta phải qua trình tự các bước như sau: - Tìm một lối đi để kết nối đến máy (EndPoint) - Kết nối với máy đó qua EndPoint vừa tìm được (Connect) - Gửi và nhận thông tin giữa các máy (Send - Recieve).

Khai báo và sử dụng

Để sử dụng được Socket và những thư viện liên quan đến socket, ta phải khai báo hai thư viện sau:

using System.Net;
using System.Net.Sockets;

Như đã giới thiệu ở trên, ta sẽ đi lần lượt các bước để giao tiếp giữa 2 máy tính. Trong cuộc sống, khi ta giao tiếp là dĩ nhiên phải có người nói và người nghe. Trong máy tính cũng vậy, khi giao tiếp giữa 2 (hay nhiều) máy, ta cũng phải để cho 1 máy lắng nghe, chờ máy kia kết nối vào để giao tiếp.

Để cho 1 máy tính ở trạng thái lắng nghe, đợi kết nối của một máy tính khác thì trong này ta sử dụng đối tượng TcpListenr. Dưới đây sẽ là cách khai báo và sử dụng đối tượng này:

int portNumber = 1252; 
// portNumber sẽ là cổng mà listener sẽ chờ đợi kết nối của máy khác 
// 1252 chỉ là một cổng ví dụ, bạn có thể sử dụng bất kì cổng nào khác. (từ 1 đến 32767).
// nên lưu ý đến việc cổng bị trùng. do đó bạn luôn luôn để 1 cổng 'phòng hờ'
TcpListener listener=new TcpListener(portNumber); //khai báo và tạo mới một listener
listener.Start(); //listener bắt đầu lắng nghe và chờ đợi

Sau khi có một máy lắng nghe, thì ta sẽ có 1 cách kết nối, ở đây ta sẽ sử dụng socket

Ta sẽ khai báo và tạo mới một đối tượng socket:

Socket mySock;
mySock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

Sau khi tạo mới socket, ta sẽ kết nối vào máy đã chờ đợi sẵn. Như đã nói ở trên, ta sẽ phải tìm ra 1 con đường để đi đến máy chờ đợi qua cổng (cổng ở đây là portNumber mà phía trên đã sử dụng. Ở đây, ta sẽ dùng IPEndPoint để đảm nhận nhiệm vụ này:

//Khai báo một đối tượng IPEndPoint;
IPEndPoint ipe;

Sau khi khai báo, ta sẽ làm mới nó. Tuy nhiên, do có một sự khác biệt nho nhỏ về cách sử dụng giữa .NET 1.0 và .NET 2.0 nên bài viết này cũng sẽ giới thiệu cả 2 cách ở 2 phiên bản của .NET.




-------------------------Còn tiếp-----------------------