ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN Lớp WINP1.B21 – WINP1.B21 – Nhóm 26
BÁO CÁO ĐỒ ÁN LẬ LẬP TRÌNH TRÊN WINDOWS ĐỀ TÀI Xây Dựng Chương Trình Trình LAN Chat GIÁO VIÊN HƯỚNG DẪN: PHẠM THI VƯƠNG THS. PHẠM NHÓM SINH VIÊN THỰC HIỆN: NGÔ DUY KHÁNH (09520414) NGUYỄN TRỌNG NHÂN (09520425) V ĂN PHÚ HIẾU (09520409 )
TP. HỒ HỒ CHÍ MINH, 6/2011
Mục Lục
I- Giớ Giớ i thiệ thiệu về về .Net Remoting: Remoting: ........................... ........................................ ........................... ............................ .......................... ............ 2 1/ .Net Remoting .................................... ................................................. .......................... ........................... ........................... .......................... ............. 2 2/ .NET Remoting Remot ing so vớ i Web Services .......................... ........................................ ........................... .......................... ............. 2 3/ Remote Objects trong .NET Remoting ...................... .................................... ........................... .......................... ............... .. 3 4/ Domain ........................ ...................................... ........................... ........................... ........................... .......................... ........................... ...................... ........ 4 5/ Channel .......................... ........................................ ........................... ........................... ........................... .......................... ........................... .................... ...... 4 6/ Object Activation: ............................. ........................................... ........................... ........................... ........................... .......................... ............. 4 7/ Client Activated Objects: ........................... ......................................... ........................... ........................... ........................... ................. .... 5 8/ Tạo một Remotable Remota ble Object: ......................... ....................................... ........................... ............................ ............................ ............... 6 ....................................... ........................... ........................... ........................... .......................... ............... .. 6 II- Giớ Giớ i thiệ thiệu về về Socket: ......................... 1/ Socket ....................... ..................................... ........................... .......................... ............................ ............................ ........................... ........................ .......... 6 2/ Chức năng .......................... ........................................ ........................... ............................ ............................ .......................... ........................... ................ 7 3/ Phân loại .......................... ........................................ ........................... ........................... ........................... .......................... ........................... .................. .... 7 4/ Thành phầ n .......................... ......................................... ............................ ........................... ........................... .......................... .......................... ............. 7 5/ Các chế độ giao tiếp .......................... ........................................ ........................... ........................... ........................... .......................... ............. 9 6/ Xây dự ng ứ ng dụng Client-Server v ớ i Socket ........................... ......................................... ........................ .......... 10 ....................................... ........................... ............................ .................. ... 13 III- Chương trình LAN Messenger: ......................... 1/ Tổng quan các Form trong chương trình .......................... ........................................ ........................... ...................... ......... 13 ........................................ ........................... ........................... ................ 14 2/ Các thư viện kèm theo chương trình .......................... 3/ Các k ỹ thuật dùng trong chương trình .......................... ........................................ ........................... .......................... ............. 14 ............. 14 4/ Các tính năng đã làm đượ c cho một chương trình Chat qua mạ ng LAN ............. c, sẽ cả i thiệt hoặc phát triể n ở các phiên bản k ế tiếp 5/ Các tính năng chưa làm đượ c, ........................... ......................................... ........................... ........................... ........................... .......................... ........................... ........................... ...................... ......... 15 ng dẫn sử dụng chương trình: ......................... ....................................... ........................... ........................... .................... ...... 15 6/ Hướ ng ....................................... ........................... ........................... ........................... ........................ ........... 25 IV- Tài liệ liệu tham khả khảo: .........................
1
I- Giớ i thiệu về .Net Remoting: 1- .Net Remoting: .Net Remoting là cơ chế giao tiếp giữa các đối tượ ng (object) mà không cùng thuộc một Process. Giúp các l ớp đối tượ ng thuộc các ứ ng dụng khác nhau có th ể liên lạc đượ c với nhau. Các đối tượ ng của các ứ ng dụng này có th ể đượ c thiết lập trên cùng một máy tính hay các máy tính khác nhau và đượ c giao tiếp từ xa thông qua các giao thức k ết nối như HTTP, TCP. Microsft .Net Remoting đượ c giớ i thiệu từ .Net Framework 1.1 cùng v ớ i Webservice. Cung cấp các kĩ thuật cho phép một đối tượ ng này truy xuất đến một đối tượ ng khác nằm ở các Application Domain khác nhau.
2- .NET Remoting so vớ i Web Services: Về khía cạnh xử lý từ xa thì Web Services hoàn toàn tương tự như .NET Remoting. Thậm chí ngườ i ta có th ể làm cho .NET Remoting tr ở thành 1 Web Services b ằ ng cách host nó trong IIS. Web Services cho phép các ứ ng dụng có th ể giao tiếp vớ i nhau mà không ph ụ thuộc platform, ngôn ng ữ lập trình, … Tuy nhiên Web Services là mộ t môi trường “stateless”, có nghĩa là nó không lưu lạ i bất kì trạng thái gì c ủa lầ n gọi trước và nó cũng không biết gì về phía client đang thự c hiệ n request. Client và server Web Services ch ỉ có thể trao đổi vớ i nhau bằng các thông điệp SOAP. Nh ững điề u sau đây là các điể m khác nhau chính giữa .NET Remoting và Web Serices, chúng cũng là nhữ ng nhân tố để ta chọ n lựa giữa 2 công ngh ệ này:
• ASP.NET Web Services ch ỉ có thể đượ c truy xuất qua HTTP còn .NET Remoting có thể đượ c dùng trên nhiều giao thức khác nhau như TCP, HTTP. 2
• Web Services là m ột môi trườ ng stateless. Khi có một request từ phía client, sẽ có một object mới đượ c tạo ra để thực hiện request đó trên server. Còn .NET Remoting lại hỗ trợ nhiề u lựa chọn state management và có th ể thực hiệ n nhiều request từ một client, đồ ng thờ i có hỗ trợ callbacks. • Web Services serialize các đối tượ ng thành XML bên trong SOAP message và vì thế có thể truyền tả i thông tin c ủa bấ t cứ thành phần nào miễn có th ể chuyể n thành XML. Còn đố i vớ i .NET Remoting thì tùy giao th ức và định dạng message mà nó có th ể truyền đi thông tin như thế nào. Ngoài ra theo như giớ i thiệu thì .NET Remoting có cho phép đối tượng đượ c truyề n vào theo c ả kiểu tham chiế u(reference) và tham tr ị (value) • Web services có th ể hoạt động trên các platform môi trườ ng khác nhau trong khi .NET Remoting yêu c ầ u phía clients ph ả i là .NET application.
3- Remote Objects trong .NET Remoting: Nếu như ở một chương trình đơn thì các đối tượ ng sẽ cùng thuộc trong ứ ng d ụng đó, và chúng dễ dàng giao tiếp đượ c với nhau; đây có thể đượ c coi là Local Objects. Tuy nhiên nếu các đối tượ ng lại thuộc nhữ ng ứ ng d ụ ng khác nhau (các Application domain khác nhau) thì c ầ n có những Remote Object để giao tiếp vớ i nhau. Remote Object có thể đượ c dẫn xuất từ MarshalByRefObject hay sử dụng [Serializable] tag hoặc bằng cách t ạo các giao diện ISerializable .
Các loại Remote Object: Trong .NET Remoting, có hai cơ chế để tạo instance c ủa Remote Object r ồi từ đó thực thi request. Đó là Singleton và Singlecall. Tùy vào m ục đích sử dụng, nhu cầ u của ứ ng dụng mà server có th ể khai báo theo cơ chế WellKnownObjectMode.SingleCall , hay WellKnownObjectMode.Singleton .
Single Call Object: Remote Object s ẽ đượ c sinh ra, th ực thi request, tr ả lờ i cho client, sau đó Object này vẫn được lưu lạ i chứ không bị hủy đi. Đế n khi nào process chạy chương trình Server kế t thúc thì instance này m ớ i bị trình hốt rác Garbage Collection h ốt đi. - Singleton Object: Ngượ c lại vớ i Single Call, khi khai báo Remote Object là Singleton thì Remote Object s ẽ đượ c khở i tạo và h ủy đi đối vớ i mỗ i lần nhận request từ phía Client. Cơ chế này tương tự như mô hình .NET Webservice truyề n thố ng. - Client-Activated Objects (CAO): Thuộc kiểu “Server -side object”, chúng chỉ đượ c kích hoạt mỗi khi có request đế n từ Client. Khi một Client gửi một request tớ i Server s ử dụ ng toán tử “new”, một thông điệp sẽ đượ c gử i tớ i -
3
Remote Applicat ion. Server sau đó sẽ tạo ra một Instance c ủa lớp đượ c yêu cầu, và tr ả về một ObjRef cho Client Application.
4- Domain: Trong .NET, khi một ứ ng dụng đượ c nạp vào trong bộ nhớ , một tiến trình đượ c tạo ra, và trong quá trình này, m ột miề n ứ ng dụng (Application Domain) cũng đượ c tạo ra. Trên th ực tế, ứ ng dụng này sẽ đượ c nạp vào Application Domain. M ỗi ứ ng dụng có thuộc các Application Domain khác nhau, vì th ế nếu chúng muố n giao tiếp đượ c vớ i nhau thì phả i sử dụng Remoting chứ không thể giao tiếp trực tiếp vớ i nhau đượ c. Các Application Domain có th ể cùng thuộc một process hoặc khác process.
5- Channel: Trong kĩ thuật .NET Remoting thì Channel đượ c hiểu như là một kênh để giao tiếp giữa client và server. M ột Object từ Client sẽ thông qua Channel để giao tiếp vớ i Object phía server, Channel s ẽ truyề n tải nhữ ng message từ hai phía. Như giớ i thiệ u phía trên thì có hai channel chính là TcpChannel và HttpChannel tương ứ ng vớ i các giao thức TCP và HTTP. Ngoài ra, TcpChannel và HttpChannel đều có khả năng extend thành nhữ ng Custom Channel. Các nguyên tắc khi thiết lập một Channel: -
-
-
-
Cầ n có ít nh ất một Channel được đăng ký với .NET Remoting trướ c khi Remote Object đượ c gọi. Và các Channels này c ần đăng ký trướ c các Remote Object. Channel được đăng ký trong mỗi Application Domain hoặc nhiề u Application Domain thuộc một Process. Khi Process k ết thúc thì các Channel này cũng tự động đượ c hủy đi. Không thể đăng ký các Channel khác nhau trên cùng mộ t port thuộc cùng một máy tính mặc dù các Channel này có th ể ở các Application Domai khác nhau. Khi thiết lập nhiề u Channel trên cùng m ột máy tính thì chúng c ần listen ở các port khác nhau. Client liên lạc với Remote Object thông qua các kênh đã đăng ký bằ ng việc gọ i các RegisterChannel trên lớ p ChannelService.
6- Object Activation: Server Actived Object chỉ đượ c tạo ra ở lần đầu tiên Client thiết lập cuộc gọi tớ i các Remote Method. Hay nói cách khác, Khi m ột Client yêu c ầu tạo ra các Remote Object thì ch ỉ các proxy c ục bộ đượ c tạo ra ở Client, còn Remote Object th ực tế nằm trên Server. Các Remote Object này s ẽ đượ c khở i tạo ở lần đầ u tiên Client thiếp lập cuộc gọi cho Server. Ví d ụ tạo ra các Proxy như sau: ...
4
// Trên Server
RemotingConfiguration.RegisterWellKnownServiceType( typeof (RemoteServerObject), "Test", WellKnownObjectMode.SingleCall); ... // Trên Client
IRemoteCom obj = (IRemoteCom)Activator.GetObject(typeof(IRemoteCom), "tcp://localhost:1002/Test"); ...
Như đã nói ở trên, chúng ta có hai cơ chế để tạo instance c ủa Remote Object là Single Call và Singleton. Đoạn mã ví d ụ c ủa nó như sau: RemotingConfiguration.RegisterWellKnownServiceType( "Test", WellKnownObjectMode.SingleCall); ...
typeof(RemoteServerObject),
RemotingConfiguration.RegisterWellKnownServiceType( "Test", WellKnownObjectMode.Singleton);
typeof(RemoteServerObject),
7- Client Activated Objects: Đối tượng Client Activated Object đượ c tạo ra mỗi trên Server ngay l ập tức mỗi khi có request từ Client hoặc cũng có thể tạo ra bằng từ khóa new hoặc Activator.CreateInstance(…). ... // On the Server
RemotingConfiguration.ApplicationName = "TestCAO"; RemotingConfiguration.RegisterActivatedServiceType(typeof(RemoteObjectCAO)); ... // On the Client
RemotingConfiguration.RegisterActivatedClientType(typeof(RemoteObjectCAO), "tcp://localhost:1002/TestCAO"); obj = new RemoteObjectCAO(); ...
Tùy thuộc vào hoàn c ả nh và nhu c ầu mà ta s ử dụng loại khác nhau. Ví d ụ: -
Singleton object được dùng để tham chiếu đế n những đối tượ ng cùng trên một server, và bất k ỳ thay đổi của Client cũng sẽ “visible” (hiện hữ u) vớ i nhữ ng 5
-
Client khác. Ví d ụ như trong hệ điề u hành Windows, khi một chương trình thay thì các Client Program khá c cũng biết đượ c. Dữ liệu sẽ được lưu trên máy chủ và đượ c truy cập bở i tất cả các Client Chúng ta sử dụng SingleCall khi muố n cung cấ p một môi trường “stateless” (Kiể u giố ng c ủa Web services truyền thố ng. Chúng ta sử dụng Client Activation nếu đối đượ ng cần phải đượ c duy trùy trạng thái k ết nố i liên t ục, trao đổ i thông tin vớ i các client khác.
8- Tạo một Remotable Object: Một Remote Object là một đối tượng đượ c k ế thừa từ lớ p MarshalByRefObject. Trong C#, khi t ạo một lớp thư việ n mớ i. Ta Add thêm lớ p có tên
MarshalByRefObject như đã nói ở trên. Khai báo using System.Runtime.Remoting để có thể sử dụng đượ c các TcpChannel hay HttpChannel. Ví dụ: MyRemotableObject.cs namespace RemotableObjects { public class MyRemotableObject : MarshalByRefObject { public MyRemotableObject() { } public void SetMessage(string message) { Cache.GetInstance().MessageString = message; } } }
II- Giớ i thiệu về Socket: 1- Socket: 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 tro ng 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 giớ i thiệ u lần đầu tiên trong ấn bả n
UNIX - BSD 4.2. d ướ i dạng các hàm h ệ thố ng theo cú pháp ngôn ng ữ C (socket(), bind(), connect(), send(), receive(), read(), write(), close() ,..). Ngày nay, Socket 6
đượ c hỗ trợ trong hầu hết các hệ điề u hành như MS Windows (WinSock), Linux và đượ c sử dụng trong nhiề u ngôn ngữ lập trình khác nhau: nh ư C, C++, C#, Java, Visual Basic, Visual C++ . . .
2- Chức năng: Socket cho phép thiết lập các kênh giao ti ếp mà hai
đầu kênh đượ c xác định bở i hai
cổ ng (port). Thông qua các c ổ ng này một tiến trình có thể nhận và g ở i d ữ liệu vớ i các tiến trình khác.
3- Phân loại: Có các loại Socket chính là: + Socket kiể u AF_UNIX ch ỉ cho phép giao tiếp giữa các tiến trình trong cùng một máy tính. + Socket kiể u AF_INTET cho phép giao ti ếp giữa các tiến trình trên nhưng máy tính khác nhau trên m ạng.
Phân loạ i theo kiểu k ết nố i:
+ Socket hướ ng k ết nối (TCP Socket) + Socket không hướ ng k ết nối (UDP Socket)
4- Thành phần: 4.1- Số hiệ u cổ ng (Port Number) c ủ a Socket
Để có thể thực hiện các cuộc giao tiếp, một trong hai tiến trình phải cho biết số hiệ u cổ ng của socket mà mình s ử d ụng. Mỗi cổ ng giao tiếp thể hiệ n một địa chỉ xác
định trong một hệ thống. Khi tiến trình đượ c gán một số hiệu cổng (Server), nó có thể nhận dư liệ u gởi đến cổ ng này từ tiến trình khác (Client). Ti ế n trình còn lại cũng 7
yêu cầu tạo ra m ột socket. 4.2- Đị a chỉ IP Ngoài số hiệu cổ ng, hai bên giao tiếp còn phả i biết địa ch ỉ IP của nhau. Trong khi số hiệu cổng dùng để phân biệt các quá trình khác nhau trên cùng m ột máy tính thì IP dùng để phân biệt các máy tính khác nhau trên cùng m ột m ạng TCP/IP.
Trong hình trên,
địa chỉ của tiến trình B1 đượ c xác định bằng 2 thông tin:
(Host B, Port B1)
+ Địa chỉ máy tính có th ể là địa ch ỉ IP dạng 118.69.123.139 hay là địa chỉ theo dạng domain như www.uit.edu.vn. + Số hiệu cổ ng gán cho Socket ph ải là duy nhất trên ph ạm vi
máy đó, có giá
trị trong khoảng từ 0-65535 (16 bits). Trong đó các cổ ng từ 1-1023 đượ c gọi là cổ ng hệ thống đượ c dành riêng cho các ti ế n trình c ủa hệ thố ng.
Số hiệu cổng
Quá trình hệ thống
21
Dịch v ụ FTP
23
Dịch v ụ telnet
25
Dịch v ụ mail (SMTP)
80
HTTP
110
Mail (POP3)
8
443
HTTPS
5- Các chế độ giao tiếp: Xét kiế n trúc c ủa hệ thố ng mạng TCP/IP
Tầ ng vận chuyể n (Transport Layer) giúp chuy ể n tiếp các thông điệ p giữa các chương trình vớ i nhau. Nó có th ể hoạt động theo hai chế độ: + Giao tiếp có nố i k ết, n ếu giữa chúng sử d ụng giao thức TCP. + Giao tiếp không k ết nổi, nếu sử d ụng giao thức UDP. Socket là giao diện giữa chương trình và lớ p vậ n chuyể n. Nó cho phép ta ch ọ n giao thức sử d ụng ở tầng vận chuyển là TCP hay UDP cho chương trình ứ ng dụng của mình.
Bảng so sánh sự khác biện giữ a hai chế độ giao tiế p có k ết nố i và không k ế t nố i.
Chế độ có nối kết + Tồ n tạ i kênh giao tiếp ảo giữa hai bên giao tiếp. + Dữ liệu đượ c gởi đi theo bảo đả m: có kiểm tra lỗ i, truyề n lại gói tin lỗ i hay m ất, đảm báo thứ tự của các gói tin. + Dữ liệu chính xác nhưng tốc độ truyề n chậm.
Chế độ không nối kết + Không tồ n tạ i kênh giao tiếp ảo giữa hai bên. + Dữ liệu đượ c gởi đi không đảm bảo: Không kiể m tra lỗ i, không phát hiện và truyề n lại gói tin bị lỗ i hay mất, không đảm bảo thứ tự đến của các gói tin. + Dữ liệu không chính xác, t ốc độ truyền nhanh.
9
6- Xây dự ng ứ ng dụng Client-Server vớ i Socket: Socket là phương tiện hiệu quả để xây dự ng các ứ ng dụng theo kiế n trúc Client-Server. Các ứ ng dụng trên Internet như Web, Mail, FTP.. . là các ví dụ điể n hình. Chúng ta sẽ tìm hiể u về các bước cơ bả n trong việc xây dự ng các ứ ng dụng Client-Server sử dụng Socket làm phương tiệ n giao tiếp theo chế độ hướ ng k ết nố i (đượ c ứng dụng trong phầ n gở i file và g ở i hình ảnh trong chương trình).
Mô hình Client-Server sử dụng Socket ở chế độ có kết nối (TCP) Giai đoạn 1: Server tạo Socket, gán s ố hiệu cổng và lắng nghe các k ết nối.
1. 2.
public void StartListening ()
{
3.
byte [] bytes = new Byte[1024];
4.
IPEndPoint ipEnd = new IPEndPoint (IPAddress .Any, 6565);
5.
Socket listener = new Socket(AddressFamily .InterNetwork , SocketType.Stream, ProtocolType .Tcp);
6.
try
7.
{
8.
listener.Bind(ipEnd);
9.
listener.Listen(100);
10.
while (true)
11.
{
12.
allDone.Reset();
13.
listener .BeginAccept (new AsyncCallback (AcceptCallback ), listener);
14.
allDone.WaitOne();
15.
}
16.
}
17.
catch (Exception ex )
18.
{
19.
UpdateStatus (ex.Message);
20. 21.
} }
10
Ta thấy Server đã khở i tạo một Socket gồ m IP và port 6565 và s ẵ n sàng lắng nghe k ết nối trên cổ ng 6565 từ Client.
Giai đọan 2: Client tạo Socket, yêu c ầu thiết lập một nối k ết vớ i Server
1. private void btnSend_Click (object sender, EventArgs e ) 2.
{
3.
Socket clientSock = new Socket(AddressFamily .InterNetwork , SocketType .Stream, ProtocolType .Tcp);
4.
byte [] fileName = Encoding.UTF8.GetBytes (fName); // tên file
5.
byte [] fileData = File.ReadAllBytes (txtFileLink.Text); // dữ liệu
6.
byte [] fileNameLen = BitConverter .GetBytes(fileName.Length); // độ dài tên file
7.
clientData = new byte[4 + fileName .Length + fileData .Length];
8.
fileNameLen.CopyTo(clientData, 0);
9.
fileName.CopyTo(clientData, 4);
10.
fileData.CopyTo(clientData, 4 + fileName .Length);
11.
lblStatus .Text = "Đang kết nối tới người nhận...";
12.
clientSock .Connect(IP, 6565); // IP máy đích
13.
lblStatus .Text = "Đang truyền tải dữ liệu. Làm ơn đợi...";
14.
clientSock .Send(clientData );
15.
clientSock .Close();
16.
lblStatus .Text = "File đã được chuyển đi thành công!";
17.
}
- Client yêu cầ u khở i tạo một socket để sử dụng các d ịch v ụ c ủa tầng vận chuyển, hệ thống sẽ kiể m tra xem port nào còn tr ố ng sẽ tự độ ng gán cho socket c ủa Client. Socket clientSock = new Socket(AddressFamily .InterNetwork , SocketType.Stream, ProtocolType .Tcp);
- Client gở i yêu cầu k ết nối đến Server có địa ch ỉ IP và port xác đị nh: clientSock .Connect(IP, 6565);
11
- Sau khi Server ch ấp nhận k ết nố i của Client, khi đó mộ t kênh giao ti ếp ảo đượ c hình thành, Client và Server có th ể trao đổ i thông tin vớ i nhau.
Giai đọan 3: Trao đổi thông tin giữa Client và Server
- Sau khi ch ấp nhận yêu cầ u k ết nối, Server đợ i Clinet gở i yêu cầu đế n. Ở đây, Client dùng clientSock .Send(clientData )gở i lần lượ t các byte c ủa dữ liệu lên Server. Sau khi nh ận đượ c dữ liệ u từ Client, Server tiến hàng chuyển đổ i dữ liệu nhận đượ c là các byte d ữ liệu thành tên c ủa file mà Client đã gở i và dữ liệu của file. Trong quá trình này, giữa Client và Server s ẽ liên t ục trao đổ i thông tin vớ i nhau về các các d ữ liệu đã nhận đượ c, tuân th ủ theo các quy t ắc c ủa giao th ức đã xác lậ p từ trướ c.
Giai đoạn 4: Kết thúc phiên làm việc
Sau khi dữ liệu đã gở i xong, client s ẽ gở i yêu cầu h ủy k ết nối clientSock.Close(); và kênh ảo k ết nố i vớ i Server s ẽ bị đóng.
Như vậ y, toàn bộ quá trình sẽ diễn ra như sau. 12
III- Chương trình LAN Messenger: 1/ Tổng quan các Form trong chương trình : Tên Form
Chức năg
Form1 FormAbout FormAddContact FormChangeDisplayName FormChangePassword FormChatRoom FormJoinRoom FormCreateAccount FormFileSender FormFileReceive FormLogsReader FormMessage
Giao diện chính của chương trình. Thông tin tác giả. Thêm m ột bạn chat vào danh sách b ạn bè. Thay đổi tên hi ển thị (Aliass) của nick chat. Thay đổi mật kh ẩu. Giao diện chính của Room chat và các ch ức năng. Tham gia vào m ổ Room chat đã đượ c tạo. Giao diện tạo một người dùng m ới. Giao diện chức năng gửi file bên ngườ i gửi. Giao diện chức năng gửi file bên ngườ i nhận. Xem l ại lịch sử chat của nick hiện hành. Giao diện cửa s ổ chat, sử dụng các thao tác nâng cao như
FormMusicPlayer FormNetworkSetting FormOfflineMessage FormOption FormPhotoSend FormPhotoReceive FormSelectContact FormSignIn FormWebcam
Webcam, SendFile, Music,… Chương trình nghe nhạ c online, mời bạn nghe nhạc. Thi ế t lập IP máy chủ. Xem các tin nh ắn Offline. Chức các tùy ch ỉnh của chương trình. Giao di ện chia sẽ hình ảnh bên người gửi. Giao diện chia sẽ hình ảnh bên người nhận. Xóa nick chat ra kh ỏi list. Giao diện đăng nhậ p Xem webcam 2 người dùng đang chat trự c ti ế p.
13
2/ Các thư viện kèm theo chương trình: Tên thư viện AxInterop.WMPLib.dll Interop.WMPLib.dll DirectX.Capture.dll DShowNET.dll Khendys.Controls.ExRichTextBox.dll
LanMessengerNotify.dll LanMessengerContact.dll LanMessengerChatRoomBase.dll
Chức năng
Các thư viện giúp sử dụng Windows Media Player có s ẵn trong Windows dùng cho tính năng “Nghe nhạ c trực tuy ến”. Thư viện đồ họa, h ỗ trợ cho tính năng “Chat Webcam” Thư viện b ổ sung cho Control RichtextBox. Giúp chèn m ặt cười vào Richtextbox d ễ dàng hơn. Thư viện sử dụng tính năng báo trạ ng thái khi m ột nick Online/ Offline hay Invisible. UserControl sử dụng cho Listchat (danh b ạ). Lớp cơ sở của tính năng Room chat, sử dụng trong .Net Remoting
3/ Các kỹ thuật dùng trong chương trình: -
.Net Remoting sử dụng Singleton. Đăng ký các kênh Httpchannel và TCPchannel. Socket sử dụng giao thức TCP. Các hàm xử lý I/O, xử lý tiế n trình. Regular Expression. Truyề n giá tr ị giữa các Form s ử dụng Delegate và thông qua Construtor. Xử lý mã HTML khi hi ển thị lên Webrowser.
…
4/ Các tính năng đã làm được cho một chương trình Chat qua mạng LAN: -
Có thể Chat qua mạng LAN vớ i nộ i dung là text. Hỗ trợ quả n lý nhiều bạ n chat bằ ng danh bạ, có thể chat vớ i nhiều ngườ i cùng một lúc. Hỗ trợ tạo Room Chat, chat theo nhóm. Phân quy ền đượ c mờ i bạ n chat vào Room Chat. Hỗ trợ gửi và xem tin nh ắn Offline. Hỗ trợ gửi file. Hỗ trợ chia sẽ hình ảnh kèm theo tính năng SlideShow. Hỗ trợ xem Webcam. Hỗ trợ tìm kiếm và nghe nh ạc trực tuyến. Mờ i bạ n chat nghe nh ạc. Hỗ trợ xem lại Log chat. Hỗ trợ các tùy ch ỉnh cho ngườ i dùng. Cho phép thao tác danh bạ bằng menu. Thông báo tr ạng thái nick chính xác (Online/Offline/Invisible). Chương trình sử dụng ít tài nguyên h ệ thống.
… 14
5/ Các tính năng chưa làm được, sẽ cải thiệt hoặc phát triển ở các phiên bản
kế tiếp: -
Voice Chat. Chia sẻ hình ảnh theo hai chiều. Hiể n thị Avatar khi người dùng đăng nhập ở nhiều máy khác nhau. Thay đổi cửa sổ chat từ Richtextbox sang sử dụng Web browser. C ả i tiế n giao diện cửa sổ Chat. Phát triển rộng hơn theo hướ ng có thể hoạt động trong môi trườ ng Internet.
…
6/ Hướng dẫn sử dụng chương trình:
Giao diện Server: Hiển thị IP c ủa Server và các log.
Giao diện người dùng: Thiết lập mạng: Từ giao diện chính c ủa chương trình, chúng ta đóng cử a sổ đăng nhập. Vào ph ần Mở rộ ng ->Thiết lập mạ ng.
15
Trong cửa sổ mớ i, nhập IP c ủa máy tính làm Server. Đồng ý.
Ở đây là 192.168.1.99 , chọn
Bắt đầu đăng nhập vào chương trình. Vào Messenger -> Đăng nhập
16
Tạo tài khoản: Tạ i cửa sổ đăng nhập, chọ n Tạo tài kho ản mới để sử d ụng.
Trong Form Đăng ký, cung cấ p nhữ ng thông tin về tên tài khoả n, mật khẩu và tên hiển thị. Sau đó chọ n Tạo.
17
MessageBox thông báo việc tạo tài khoản thành công. Chúng ta có th ể sử dụng tài khoản này để đăng nhập vào chương trình. Chọn Đăng nhập. Và đã vào giao diệ n chính c ủa chương trình.
Giao diện chính:
18
Chức năng Menu Bar Menu
Messenger
Mở rộng
Chức năng Gửi một tin nh ắn
Phím t ắt Ctrl+G
Thêm bạn bè
Ctrl+T
Xóa bạn bè
Ctrl+Shift+X
Lịch sử chat Đăng nhập b ằng tài khoản khác Đăng xuấ t Thu nhỏ xu ống khay hệ th ống Thoát
Ctrl+L
Tùy chỉnh Thi ế t lập mạng Đổi tên hi ển thị với bạn bè Nghe nhạc online
Mở một Room Chat Trợ giúp
Tham gia Room Chat Hướng d ẫn sử dụng Thông tin
Ctrl+D Ctrl+M Alt+F4
Mô tả Gởi tin nh ắn tới một người. Thêm một người vào danh sách bạn bè (Friend List). Xóa một người trong danh sách bạn bè (Friend List). Xem lại Log chat g ần đây. Đăng nhập b ằng tài khoản khác Đăng xuấ t Thu nhỏ xu ống khay hệ th ống
Thoát chương trình Thay đổi cài đặ t v ề âm thanh, nơi lưu file, lịch sử chat Tùy chỉnh IP của Server chat Đổi tên hi ển thị với bạn bè Nghe nhạc trực tuy ế n từ mp3.zing.vn. Tìm ki ế m, download bài hát. M ời bạn chát nghe nhạc. Tạo Room chat cho nhi ều người cùng tham gia. Tham gia Room chat co s ẵn. Hướng d ẫn sử dụng. Nhóm thực hiện.
Cửa sổ chat: Cửa sổ Chat:
19
Menu
Chức năng
Phím t ắt
Gởi Emoticons tới bạn Chat
Gởi ti ế ng Buzz t ới bạn Chat
Mô tả Gởi Emoticons tới bạn Chat
Ctrl+G
Gởi ti ế ng Buzz t ới bạn Chat
Chia sẻ file tới bạn Chat
Gởi file tới bạn Chat
Chia sẻ hình ảnh
Chia sẻ hình ảnh
Chia sẻ File
Chia sẻ File
Chia sẻ file: Gở i file: B ấm "Chọ n file cầ n gử i" chọ n file muố n chia sẻ. Hỗ tr ợ tất c ả các loại file. Sau đó chọ n Gở i. Kết quả c ủa quá trình g ở i file sẽ đượ c cập nhậ n ở thanh Trạng thái.
Lúc chưa gở i:
Gở i thành công:
20
Chia sẻ hình ảnh: Gở i ảnh: Sau khi chọn nút gở i ảnh, cửa sổ Chia sẻ hình ảnh đượ c bật lên ở 2 bên. Hình ảnh đượ c gở i sẽ hiện lên ở cả 2 bên, dướ i dạ ng slide hình ảnh. Bên gử i ảnh:
21
Bên nhận ảnh:
Webcam
Hiển thị webcam 2 người đang chat trự c tiếp vớ i nhau.
22
Nghe nhạc:
Menu Nhập tên bài hát c ần tìm (1) Danh sách bài hát tìm được (2) Thông tin của bài hát (3) Mời bạn trong list nghe nhạc (4) Tìm ki ế m(5) Tải v ề máy (6)
Chức năng
Phím t ắt
Mô tả
Tìm ki ế m bài hát từ mp3.zing.vn
Tìm ki ế m bài hát từ mp3.zing.vn
K ế t quả tìm ki ếm được của bài hát trên
K ế t quả tìm ki ếm được của bài hát trên
Thông tin liên quan tới bài hát bao g ồm v ề tên bài hát và ngườ i trình bày
Thông tin liên quan t ới bài hát bao g ồm v ề tên bài hát và người trình bày
Mời bạn có trong danh sách cùng nghe nhạc
Mời bạn có trong danh sách cùng nghe nh ạc
Tìm ki ế m bài hát
Tìm ki ế m bài hát
Download bài hát đượ c chọn v ề
Download bài hát đượ c chọn v ề
máy
máy
23
Tạo Room Chat
Menu
Chức năng
Mô tả
Nội dung chat (1)
Hi ển thị nội dung chat của cả phòng chat
Hi ển thị nội dung chat của cả phòng chat
Danh sách các nick tham gia room chat
Danh sách các nick tham gia room chat
Mời bạn có trong danh sách b ạn bè tham gia vào phòng chat
Mời bạn có trong danh sách b ạn bè tham gia vào phòng chat
Khung soạn nội dung chat
Khung soạn nội dung chat
Nick trong Room (2) Mời thêm bạn chat (3) Khung soạn thảo (4)
24
IV- Tài liệu tham khảo: Diễn đàn Cộng đồ ng C việt - http://www.congdongcviet.com. Cộng đồng CodeProject – http://www.codeproject.com.
25