Tải bản đầy đủ (.pdf) (26 trang)

Đề tài xây dựng chương trình lan chat

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.03 MB, 26 trang )

ĐẠ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 – Nhóm 26

BÁO CÁO
ĐỒ ÁN LẬP TRÌNH TRÊN WINDOWS
ĐỀ TÀI
Xây Dựng Chương Trình LAN Chat
GIÁO VIÊN HƯỚNG DẪN:
THS.PHẠM THI VƯƠNG
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Ồ CHÍ MINH, 6/2011


Mục Lục
I- Giới thiệu về .Net Remoting: ................................................................................ 2
1/ .Net Remoting ...................................................................................................... 2
2/ .NET Remoting 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 Object: ................................................................................. 6
II- Giới thiệu về Socket: .............................................................................................. 6
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
III-

Chương trình LAN Messenger: ...................................................................... 13

1/ Tổng quan các Form trong chương trình .............................................................. 13
2/ Các thư viện kèm theo chương trình .................................................................... 14
3/ Các kỹ thuật dùng trong chương trình .................................................................. 14
4/ Các tính năng đã làm được cho một chương trình Chat qua mạng LAN ............. 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
.................................................................................................................................. 15
6/ Hướng dẫn sử dụng chương trình: ........................................................................ 15
IV-

Tài liệu tham khảo: .......................................................................................... 25

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 hồn tồ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. Ngồ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 Application. 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. Ngồ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 q 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 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.
17.

lblStatus.Text = "File đã được chuyển đi thành công!";
}

- 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, tồn bộ q 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
Form1
FormAbout
FormAddContact
FormChangeDisplayName
FormChangePassword

FormChatRoom
FormJoinRoom
FormCreateAccount
FormFileSender
FormFileReceive
FormLogsReader
FormMessage
FormMusicPlayer
FormNetworkSetting
FormOfflineMessage
FormOption
FormPhotoSend
FormPhotoReceive
FormSelectContact
FormSignIn
FormWebcam

Chức năg
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ư

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 ngun 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. Ở đây là 192.168.1.99, chọn
Đồng ý.

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

Ctrl+T

Xóa bạn bè

Mở rộng

Phím tắt
Ctrl+G

Thêm bạn bè

Messenger

Chức năng
Gửi một tin nhắn

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
Thố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 q 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ề
máy

Download bài hát được chọn về
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



×