VIẾT CHƯƠNG TRÌNH TRÒ CHUYỆN ĐƠN GIẢN BẰNG NGÔN NGỮ LẬP TRÌNH C.

54 697 0
VIẾT CHƯƠNG TRÌNH TRÒ CHUYỆN ĐƠN GIẢN BẰNG NGÔN NGỮ LẬP TRÌNH C.

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

VIẾT CHƯƠNG TRÌNH TRÒ CHUYỆN ĐƠN GIẢN BẰNG NGÔN NGỮ LẬP TRÌNH C. VIẾT CHƯƠNG TRÌNH TRÒ CHUYỆN ĐƠN GIẢN BẰNG NGÔN NGỮ LẬP TRÌNH C. VIẾT CHƯƠNG TRÌNH TRÒ CHUYỆN ĐƠN GIẢN BẰNG NGÔN NGỮ LẬP TRÌNH C. VIẾT CHƯƠNG TRÌNH TRÒ CHUYỆN ĐƠN GIẢN BẰNG NGÔN NGỮ LẬP TRÌNH C.

Muc Lục Muc Lục LỜI MỞ ĐẦU LỜI CẢM ƠN NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Chương 1: CƠ SỞ LÝ THUYẾT VÀ ỨNG DỤNG 1.1.Sơ lược lập trình Socket 1.1.1.Khái niệm IPAddress Port 1.1.2.Lớp IPAddress 1.1.3.Lớp IPEndPoint .6 1.1.4.Lập trình Socket hướng kết nối(TCP) .6 1.1.5.Lập trình Socket phi kết nối(UDP) 1.1.6.Lớp Helper C# Socker .8 1.2.Xử lý tiến trình lập trình đa luồng 12 1.2.1.Khái niệm luồng 12 1.2.2.Khảo sát namespace System.Threading 13 1.3.Đồng bất đồng lập trình đa luồng 16 1.4.Hệ mã hóa công khai RSA 19 1.4.1.Khái niệm mã hóa 19 1.4.2.Hệ mã khóa 21 1.4.3.Thuật toán mã hóa RSA 22 Chương 2: PHÂN TÍCH VÀ THIẾT KẾ CHƯƠNG TRÌNH 27 2.1.Phân tích 27 2.1.1.Phân tích nhu cầu thực tiễn 27 2.1.2.Yêu cầu đề 27 2.1.3.Phân tích thành phần xử lý .27 2.1.4.Quá trình xử lý chương trình 35 2.2.Thiết kế 41 2.2.1.Thiết kế Server 41 2.2.2.Thiết kế Client .44 2.3.Cài đặt sử dụng chương trình 48 KẾT LUẬN .50 DANH MỤC TÀI LIỆU THAM KHẢO 51 DANH SÁCH HÌNH VẼ SƠ ĐỒ Hình 1.1 Lập trình socket hướng kết nối (TCP) .6 Hình 1.2 Lập trình socket phi kết nối (UDP) Hình 1.3 Kết chương trình đồng hóa .18 Hình 1.4 Kết chương trình bất đồng 18 Hình 1.5 Mã hóa 20 Hình 1.6 Mã hóa giải mã thông tin truyền .20 Hình 1.7 Mã hóa bí mật 21 Hình 1.8 Mã hóa công khai .21 Hình 2.1 Sơ đồ xử lý đăng nhập 28 Hình 2.2 Sơ đồ xử lý đăng xuất .29 Hình 2.3 Sơ đồ xử lý gởi tin nhắn 30 Hình 2.4 Giao diện Server thu gọn .42 Hình 2.5.a Giao diện Server mở rộng chưa kết nối 43 Hình 2.5.b Giao diện Server mở rộng có kết nối 43 Hình 2.6 Giao diện Client đăng nhập 44 Hình 2.7 Giao diện Client thu gọn .45 Hình 2.8 Giao diện Client Chat room 46 Hình 2.9 Giao din Client tin nhắn riêng tư .47 Hình 2.10 Giao diện Client Chat riêng tư 48 Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng LỜI MỞ ĐẦU Với phát triển Internet nay, việc viết phần mềm ứng dụng mạng trở nên cần thiết phổ biến với nhà phát triển phần mềm Với nhu cầu trao đổi thông tin, liên lạc trò chuyện mạng ngày tăng nay, việc nghiên cứu xây dựng thành công chương trình Chat đáp ứng nhu cầu cần thiết làm phong phú thêm phương thức trao đổi trò chuyện chương trình Chat Với lý đặt thế, việc nghiên cứu xây dựng nên chương trình Chat phải đảm bảo tính cần thiết như: gởi tin nhắn riêng tư nhóm user, tạo danh sách bạn bè Việc nghiên cứu xây dựng chương trình Chat cần thực cách kĩ lưỡng khoa học để tạo ứng dụng có với tính cần thiết, dể dàng sử dụng, tao tác linh hoạt Để xây dựng thành công chương trình Chat, em tập trung vào đối tượng phạm vi nghiên cứu sau:  Đối tượng nghiên cứu: tìm hiểu chế hoạt động Socket, nguyên lý lập trình đa luồng, đồng bất đồng lập trình đa luồng, cuối ứng dụng hệ mã hóa công khai RSA để mã hóa thông tin truyền mạng  Phạm vi nghiên cứu: tạo chương trình Chat với tính gởi nhận tin nhắn dạng text users với dạng riêng tư nhóm, mã hóa giải mã thông tin trước truyền sau nhận nhằm đảm bảo tính riêng tư bảo mật truyền liệu Tất trình giám sát điều khiển Server Trong báo cáo em xin trình bày theo kết cấu: Chương I: CƠ SỞ LÝ THUYẾT VÀ ỨNG DỤNG Tìm hiểu lập lập trình Socket ngôn ngữ C#, đưa nhìn tổng quan sở lý thuyết chủ đạo trình xây dựng chương trình Tìm hiểu ứng dụng hệ mã hóa công khai RSA trình mã hóa thông tin trước truyền Chương II: PHÂN TÍCH VÀ THIẾT KẾ CHƯƠNG TRÌNH SVTH: Nguyễn Văn Xuân Trang Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng Đưa bước phân tích từ nghiên cứu thực tế người sử dụng vận dụng sở lý thuyết việc trình xây dựng chương trình Đề giải pháp bước phân tích nhằm xây dựng chương trình cách khoa học Chương III: CÀI ĐẶT VÀ SỬ DỤNG CHƯƠNG TRÌNH Là cách hướng dẫn người sử dụng phương pháp cài đặt chương trình, yêu cầu hệ thống phương pháp sử dụng chương trình SVTH: Nguyễn Văn Xuân Trang Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng LỜI CẢM ƠN Bằng nổ lực kiên trì học hỏi trình thự c h iệ n kh óa luậ n , em hoàn thành đề tài “Viết chương trình trò chuyện đơn giản ngôn ngữ lập trình C#” với hướng dẫn Thầy Ngô Đình Thưởng Em xin chân thành cảm ơn Thầy Ngô Đình Thưởng hướng dẫn em thực khóa luận tốt nghiệp Thầy nhiệt tình hướng dẫn giải đáp thắc mắc trình thực khóa luận Em xin chân thành gởi lời cảm ơn đến Thầy Cô khoa Tin học, Anh chị bạn giúp đỡ suốt trình thực khóa luận tốt nghiệp Cuối xin chúc quý Thầy cô, Anh chị bạn sức khỏe công tác tốt! Đà Nẵng, ngày 15 tháng 05 năm 2013 Sinh viên thực Nguyễn Văn Xuân SVTH: Nguyễn Văn Xuân Trang Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… Đà Nẵng, ngày tháng năm 2013 Giáo viên hướng dẫn Ngô Đình Thưởng SVTH: Nguyễn Văn Xuân Trang Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng Chương 1: CƠ SỞ LÝ THUYẾT VÀ ỨNG DỤNG 1.1 Sơ lược lập trình Socket 1.1.1 Khái niệm IPAddress Port Nguyên lý: Trong máy có nhiều ứng dụng muốn trao đổi với ứng dụng khác thông qua mạng (VD: Có ứng dụng máy A muốn trao đổi với ứng dụng máy B) Mỗi máy tính có đường truyền liệu (để gửi nhận liệu cho nhau) Vấn đề: Rất xảy "nhầm lẫn" liệu từ máy A gửi đến máy B liệu gửi cho ứng dụng máy B? Trong trình truyền nhận liệu xảy lỗi làm mát sai lệch liệu Giải quyết: Mỗi ứng dụng máy B gán số hiệu (gọi cổng Port), số hiệu cổng từ 65535 Khi ứng dụng máy A muốn gửi cho ứng dụng máy B việc điền thêm số hiệu cổng (vào trường RemotePort) vào gói tin cần gửi Trên máy B, ứng dụng việc kiểm tra giá trị cổng gói tin xem có trùng với số hiệu cổng (đã gán – giá trị Localport) hay không? Nếu xử lý, trái lại không làm Như cần trao đổi liệu cho hai ứng dụng cần phải biết thông tin tối thiểu địa IP (IP Address) số hiệu cổng (Port) ứng dụng 1.1.2 Lớp IPAddress IPAddress : lớp dùng để mô tả địa IP, lớp sử dụng nhiều phương thức Socket Một số phương thức lớp IPAddress Phương thức: • Equals: So sánh địa IP • GetHashCode: Lấy giá trị hash cho đối tượng IPAddress • GetType: Trả kiểu thể địa IP • HostToNetworkOrder: Chuyển địa IP từ host byte order thành network dy order IsLoopBack Cho biết địa IP có phải địa LoopBack hay không SVTH: Nguyễn Văn Xuân Trang Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng 1.1.3 Lớp IPEndPoint IPEndPoint một lớp đối tượng mô tả kết hợp địa IP Port Đối tượng lớp IPEndPoint dùng để gắn kết Socket với địa cục địa từ xa Hai thuộc tính IPEndPoint dùng để lấy vùng port hệ thống MinPort MaxPort 1.1.4 Lập trình Socket hướng kết nối(TCP) Trong lập trình Socket hướng kết nối, giao thức TCP dùng để thành lập phiên làm việc hai EndPoint Khi sử dụng giao thức TCP để thành lập kết nối ta phải đàm phán kết nối trước kết nối thành lập liệu truyền thiết bị cách tin tưởng Để lập trình Socket hướng kết nối ta phải thực loạt thao tác Client Server mô hình bên Hình 1.1 Lập trình socket hướng kết nối (TCP) Sử dụng C# Stream với TCP: Điều khiển thông điệp dùng giao thức TCP thường gây khó khăn cho lập trình viên nên NET Framework cung cấp số lớp để giảm gánh nặng lập trình SVTH: Nguyễn Văn Xuân Trang Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng Một lớp NetworkStream, lớp dùng để gởi nhận Text sử dụng giao thức TCP StreamWriter StreamReader Lớp NetworkStream nằm namespace System.Net.Sockets, lớp có nhiều phương thức tạo lập để tạo thể lớp NetworkStream phương thức tạo lập sau hay dùng nhất: Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.TCP); NetworkStream ns = new NetworkStream(server); Namespace System.IO chứa lớp StreamReader StreamWriter điều khiển việc đọc ghi thông điệp text từ mạng Cả lớp triển khai với đối tượng NetworkStream để xác định hệ thống đánh dấu cho thông điệp TCP Lớp StreamReader có nhiều phương thức tạo lập, phương thức tạo lập đơn giản lớp StreamReader : public StreamReader(Stream stream); Biến stream tham chiếu đến kiểu đối tượng Stream kể đối tượng NetworkStream Có nhiều phương thức thuộc tính dùng với đối tượng StreamReader sau tạo Tương tự đối tượng StreamReader, đối tượng StreamWriter tạo từ đối tượng NetworkStream: public StreamWriter(Stream stream); StreamWriter có nhiều phương thức thuộc tính kết hợp với nó, số phương thức thuộc tính lớp StreamReader có đối tượng StreamWrite 1.1.5 Lập trình Socket phi kết nối(UDP) Các Socket phi kết nối cho phép gởi thông điệp mà không cần phải thiết lập kết nối trước Một phương thức đọc toàn thông điệp gởi phương thức gởi, điều làm tránh rắc rối, phức tạp với biên liệu Thật không may mắn giao thức phi kết nối UDP không đảm bảo liệu truyền tới đích Nhiều yếu tố mạng bận, mạng bị ngắt kết nối chừng ngăn cản gói tin truyền tới đích Nếu thiết bị chờ liệu từ thiết bị xa, phải gán địa SVTH: Nguyễn Văn Xuân Trang Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng } Xử lý request: • CONNECT: Client kết nối đến gởi yêu cầu kết nối đến Server, nhận request Server thêm Client danh sách để quản lý Đồng thời gởi thông tin cập nhật đến Client khác • CHAT: nhận Client gởi tin nhắn đến Client khác, nhận request Server thêm địa người gởi vào tin nhắn để chuyển tiếp đến đích cần gởi • REQUESTUSERS: nhận yêu cầu từ Client muốn gởi cập nhật lại danh sách bạn bè Lúc Server cập nhật lại danh sách Client cho tất Client • BUZZ: Client muốn gây ý cho người khác Server xác định người gởi chuyển đến Client tương ứng 2.1.4.3 Quá trình xử lý Client Client chương trình cung cấp cho người sử dụng Client hoạt động dựa vào trình gởi nhận request từ Server, với request có phương thức xử lý riêng Khi nhận thông tin từ Server, Client phân tích thông tin để lấy yêu cầu Server đáp ứng lại yêu cầu Client nhận request sau: private void ProcessCommands(string strMessage) { string[] dataArray; dataArray = strMessage.Split((char)124); switch (dataArray[0]) { case "JOIN": DisplayText("Bạn đăng nhập thành công." + (char)13 + (char)10); break; case "CHAT": string data = dataArray[1]; SVTH: Nguyễn Văn Xuân Trang 37 Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng if (dataArray[1].Substring(0, (11))== "Thông báo: "); { listUser.Items.Clear(); SendData("REQUESTUSERS"); } if (dataArray[1].Substring(0, 8) == "Chú ý:" || dataArray[1].Substring(0, 11) == "Thông báo: ") DisplayText(dataArray[1] + (char)13 + (char)10); else { string subStringDesPr = data.Substring(data.Length (user + "encrypt").Length,(user +"encrypt").Length); String subStringDesPr1 = data.Substring(data.Length user.Length, user.Length); string subStringSou = data.Substring(0,str.Length); string subStringDesP = data.Substring(data.Length ("noname" + "encrypt").Length, ("noname" + "encrypt").Length); string subStringDesP1 = data.Substring(data.Length "noname".Length, "noname".Length); string subEncryp = data.Substring(data.Length – "encrypt".Length, "encrypt".Length); if (subStringDesPr == (user + "encrypt") || subStringDesPr1 == user) { if (subStringSou == str) { if (subStringDesPr ==(user + "encrypt")) txtDiplay1.AppendText(getString( data.Subs tring(0, data.Length – (user + "encrypt").Length)) + (char)13 + (char)10); if (subStringDesPr1 == user) txtDiplay1.AppendText(data.Substring (0, data.Length - user.Length) + (char)13 + (char)10); } else { if (subStringDesPr==(user + "encrypt")) txtDisplayPrivate.AppendText(getString( data Substring(0, data.Length – (user + "encrypt").Length)) + SVTH: Nguyễn Văn Xuân Trang 38 Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng (char)13 + (char)10); if (subStringDesPr1 == user) txtDisplayPrivate.AppendText( data.Substri ng(0, data.Length – user.Length) + (char)13 + (char)10); } } else if (subStringDesP == ("noname" + "encrypt") || subStringDesP1 == "noname") { if (subStringDesP == ("noname" + "encrypt")) { DisplayText(getString(data.Substring(0, data.Length - ("noname" + "encrypt").Length)) + (char)13 + (char)10); } if (subStringDesP1 == "noname") { DisplayText(data.Substring(0, data.Length - "noname".Length) + (char)13 + (char)10); } if (str != "noname") { this.sttMessege.ForeColor = System.Drawing.Color.Maroon; sttMessege.Text = "New messages from the Room Chat"; } } } break; case "LISTUSERS": ListUsers(dataArray); break; case "BROAD":DisplayText("Máy chủ: " + dataArray[1] + (char)13 + (char)10);break; case "DELETEUSER": try { string myuser, a; myuser = dataArray[1]; a = myuser.Trim(); if (a == user) SVTH: Nguyễn Văn Xuân Trang 39 Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng { MessageBox.Show("Server bị gián đoạn.Mất kết nối", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error); SendData("DISCONNECT"); this.Dispose(); } } catch { } break; case "BUZZ": string data1 = dataArray[1]; string subString = data1.Substring(data1.Length – user.Length, user.Length); string subStringSou1 = data1.Substring(0,str.Length); if (subString == user) { Buzz(); if (subStringSou1 == str) txtDiplay1.AppendText("BUZZ!!!" + (char)13 + (char)10); else txtDisplayPrivate.AppendText(data1.Substring(0, data1.Length - user.Length) + "BUZZ!!" + (char)13 + (char)10); } break; } } Xử lý request : • JOIN : Khi Client nhận thông báo từ Server kết nối thành công • CHAT: Khi Client nhận thông báo tức có người gởi tin nhắn đến Quá trình xử lý tin nhắn phức tạp tin nhắn mang thông điệp khác xác định đích đến, thông tin đánh dấu mã hóa, người gởi… Cho nên trình phân tích tin nhắn phức tạp • DELETEUSER:Yêu cầu từ Server phải ngắt kết nối SVTH: Nguyễn Văn Xuân Trang 40 Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng • LISTUSERS: Khi nhận thông báo tức Server gởi FriendList tới • BROAD : Khi nhận thông báo tức có lời nhắn từ Server • BUZZ: chuyển gây ý từ Client khác mà Server gởi tới Khi Client gọi lại ham Buzz() để tạo hiệu ứng rung chuyển form hình với tốc đọ nhanh private void Buzz() { int currentX = this.Location.X; int currentY = this.Location.Y; int sleepTime = 10; int width = 3; this.TopMost = true; this.Activate(); for (int i = 0; i < 4; i++) { this.Left = currentX - width; this.Top = currentY width; System.Threading.Thread.Sleep(sleepTime); this.Left = currentX + width; this.Top = currentY width; System.Threading.Thread.Sleep(sleepTime); this.Left = currentX + width; this.Top = currentY + width; System.Threading.Thread.Sleep(sleepTime); this.Left = currentX - width; this.Top = currentY + width; System.Threading.Thread.Sleep(sleepTime); this.Left = currentX; this.Top = currentY; } this.TopMost = false; this.Activate(); } 2.2 Thiết kế 2.2.1 Thiết kế Server 2.2.1.1 Giao diện: Giao diện Server thiết kế đơn giản, linh hoạt nên dể dàng sử dụng trình quản lý Giao diện tùy biến chọn dạng thu gọn mở rộng SVTH: Nguyễn Văn Xuân Trang 41 Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng • Giao diện thu gọn hình 2.4: Hình 2.4 Giao diện Server thu gọn Giao diện giúp làm đơn giản nhỏ gọn phương thức quản lý Server Ở giao diện Hình 2.4 Server có chức năng:  Click nút khởi động Server chuyển qua trạng thái sẵn sàng kết nối  Click nút  Click nút mở rộng cửa sổ thu cửa taskbar • Giao diện mở rộng Server hình 2.5 a b: SVTH: Nguyễn Văn Xuân Trang 42 Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng Hình 2.5.a: Giao diện Server mở rộng chưa kết nối Hình 2.5.b: Giao diện Server mở rộng có kết nối Giao diện hiển thị chi tiết thông tin trạng thái Client kết nối hệ thông mạng hành SVTH: Nguyễn Văn Xuân Trang 43 Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng 2.2.1.2 Quá trình xử lý Với thiết kế đơn giản linh hoạt Chương trình Server cầu nối trung gian để kết nối Client lại với Server quản lý kết nối, giúp đảm bảo trình truyền nhận ổn định Server nơi lưu giữ thông tin trạng thái Client hoạt động 2.2.2 Thiết kế Client 2.2.2.1 Giao diện: Giao diện Client thiết kế cách khoa học thuận tiện cho trình sử dụng Có thể sử dụng cách dể dàng, đơn giản Với hiệu ứng chuyển trang bắt mắt thao tác tạo cảm giác thích thú cho người sử dụng Giao diện thiết kế sau : • Giao diện đăng nhập hình 2.6: Hình 2.6 Giao diện Client đăng nhập Giao diện đăng nhập form với textBox để nhập Username dùng để định danh trình kết nối • Sau đăng nhập trở giao diện hình 2.7: SVTH: Nguyễn Văn Xuân Trang 44 Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng Hình 2.7 Giao diện Client thu gọn Trên giao diện có menu chính, button điều khiển danh sách bạn bè Trong trình gởi tin nhắn tùy biến giao diện theo nhiều cách Giao diện room chat, private chat, có tin nhắn riêng tư từ client gởi tới: Trên giao diện Hình 2.7 có chức sau:  Tại Listbox có tên File: Logout thoát để đăng nhập lại Username khác; Exit tắt cửa sổ ẩn taskbar, Dispose thoát hoàn toàn tắt cửa sổ  Tại Listbox có tên Driver: Zom (Zom in mở rộng sổ Chat Rom Zom out ngược lại); Public mở cửa sổ chat Rom; Right mở cửa sổ hiển thị tin nhắn riêng tư ngược lại left • Giao diện Chat room hình 2.8: SVTH: Nguyễn Văn Xuân Trang 45 Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng Hình 2.8 Giao diện Client Chat room Là giao diện thiết kế để thực trình gởi tin nhắn đến tất client kết nối hệ thông mạng cục Khi thao tác giao diện việc có người mạng gởi tin nhắn tới client hiển thị khung tin nhắn riêng tư Quá trình thực hình bên • Giao diện có tin nhắn riêng tư từ client khác gởi tới hình 2.9 SVTH: Nguyễn Văn Xuân Trang 46 Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng Hình 2.9 Giao diện Client tin nhắn riêng tư Như thấy hình có người(Vũ Hồ)gởi tin nhắn đến(Xuân Nguyễn) mà ta không chọn chức chat với người hiển thị khung tin nhắn riêng tư Còn chọn chức chat với người tin nhắn hiển thị khung Chat chung Trên giao diện chọn chức thu gọn phần tin nhắn để giao diện đơn giản • Giao diện Chat riêng tư hình 2.10: SVTH: Nguyễn Văn Xuân Trang 47 Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng Hình 2.10: Giao diện Client Chat riêng tư Ở giao diện trình gởi thông tin riêng tư client diển đây, chọn chức mã hóa(encrypt) trước tin nhắn gởi để đảm bảo tính riêng tư đảm bảo tính bảo mật tốt 2.2.2.2 Quá trình xử lý: Ở Client thông điệp nhận từ Server xử lý cách hợp lý với thao tác gởi đến request tới Server để Server đáp ứng lại yêu cầu 2.3 Cài đặt sử dụng chương trình Chương trình thiết kế với mục đích hoạt động hệ thông mạng cục nên yêu cầu trình cài đặt sử dụng phải đảm bảo tính thông suốt mạng hệ thống Chương trình thiết kế ngôn ngữ C# với công cụ Visual Studio 2010 nên yêu cầu hệ thống phải cài tảng Net framework 3.5 trở lên SVTH: Nguyễn Văn Xuân Trang 48 Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng Chương trình hoạt động nhẹ nhàng nên việc yêu cầu cấu hình phần cứng không cao Với thiết kế giao diện thân thiện nên việc sử dụng đơn giản Thuận tiện tất người sử dụng, việc nắm bắt trình xử lý chương trình giúp người dùng hiểu thao tác chương trình xác SVTH: Nguyễn Văn Xuân Trang 49 Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng KẾT LUẬN  Kết đạt Đề tài “Viết chương trình Chat đơn giản ngôn ngữ lập trình C#” thực nội dung sau:  Tìm hiểu nắm cách thức lập trình Socket lập trình đa luồng môi trường NET  Tìm hiểu cách thức hoạt động chương trình Chat đơn giản  Biết chức cần thiết chương trình chat đơn giản  Xây dựng chương trình Chat đơn giản cài đặt mạng Lan với số tính như: gởi tin nhắn trực tiếp Users, tạo danh sách bạn bè, chat nhóm Chat, trình chat mã hóa thông tin  Hướng phát triển Về bản, nghiên cứu đạt yêu cầu đặt Tuy nhên có điều kiện, em cố gắng phát triển thêm chức sau: • Hỗ trợ gởi hình ảnh Chat • Hỗ trợ chức gởi file • Hỗ trợ chức Voice Chat Webcam • Cải tiến giao diện thân thiện • Xây dựng CSDL lưu trữ về: Thông tin người dùng, nội dung tin nhắn SVTH: Nguyễn Văn Xuân Trang 50 Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng DANH MỤC TÀI LIỆU THAM KHẢO Tài liệu: Giáo trình “Mạng Máy Tính” , khoa Tin Học ĐH Sư Phạm Giáo trình “Lập Trình Chuyên Nâng Cao”, Tác Giả: Trần Uyên Trang Giáo trình “Truyền Và Bảo Mật Thông Tin”, Lê Thị Bích Hồng Dương Quang Thiện, 2005, NET toàn tập Nguyễn Ngọc Bình Phương, 2005, Các giải pháp lập trình C# Mai Lam, 2010, Giáo trình lập trình ứng dụng mạng Website: http://congdongcviet.com http://congdongcsharp.com/ http://www.csharpvn.com/KienThuc_Default.aspx http://vi.wikipedia.org SVTH: Nguyễn Văn Xuân Trang 51 [...]... chuỗi 1.2 Xử lý tiến trình trong lập trình đa luồng 1.2.1 Khái niệm luồng Một luồng (Thread) là một chuỗi liên tiếp những sự thực thi trong chương trình Trong một chương trình C#, việc thực thi bắt đầu bằng phương thức main() và tiếp tục cho đến khi kết thúc hàm main() Cấu trúc này rất hay cho những chương trình có một chuỗi xác định những nhiệm vụ liên tiếp Nhưng thường thì một chương trình cần làm nhiều... làm việc giải quyết vấn đề tiện lợi hơn Dưới đây chúng ta sẽ tìm hiểu một vài lớp cơ bản trong ngôn ngữ lập trình C# và vấn đề đồng bộ hóa (Synchronization) trong lập trình đa luồng 1.2.2 Khảo sát namespace System.Threading Namespace System.Threading cung cấp một số kiểu dữ liệu cho phép bạn thực hiện lập trình đa luồng Ngoài việc cung cấp những kiểu dữ liệu tượng trưng cho một luồng cụ thể nào đó,... chỉ Server cụ thể do đó phương thức Connect() không cần dùng trong chương trình UDP Client Mô hình bên dưới mô tả các bước lập trình Socket phi kết nối Hình 1.2 Lập trình socket phi kết nối (UDP) 1.1.6 Lớp Helper của C# Socker 1.1.6.1 Lớp TCPClient: Lớp TCPClient nằm trong namespace System.Net.Sockets được thiết kế để hổ trợ cho việc viết ứng dụng của TCP Client được dể dàng Lớp TcpClient cho phép tạo... Khóa luận tốt nghiệp GVHD: Th.S Ngô Đình Thưởng Chương 2: PHÂN TÍCH VÀ THIẾT KẾ CHƯƠNG TRÌNH 2.1 Phân tích 2.1.1 Phân tích nhu cầu thực tiễn Với sự phát triển của Internet hiện nay, nhu cầu trao đổi thông tin, trò chuyện đã trở thành một nhu cầu cần thiết Hiện nay cũng đã có nhiều phần mềm Chat với những ứng dụng và tính năng đã đáp ứng được các nhu cầu trò chuyện, tán gẫu trao đổi thông tin như Yahoo,... Lấy hoặc thiết lập thời gian kết nối TCP vẫn còn sau khi gọi phương thức Close() • NoDelay: Lấy hoặc thiết lập thời gian trễ được dùng để gởi hoặc nhận ở bộ đệm TCP • ReceiveBufferSize: Lấy hoặc thiết lập kích thước bộ đệm TCP nhận • ReceiveTimeout: Lấy hoặc thiết lập thời gian timeout của Socket • SendBufferSize: Lấy hoặc thiết lập kích thước bộ đệm TCP gởi • SendTimeout: Lấy hoặc thiết lập giá trị timeout... TcpListener có thể chấp nhận kết nối khác Để đóng đối tượng TcpListener ta dùng phương thức Stop() 1.1.6.3 Lớp UDPClient: Lớp UdpClient được tạo ra để giúp cho việc lập trình mạng với giao thức UDP được đơn giản hơn Lớp UdpClient có bốn phương thức tạo lập • UdpClient(): tạo ra một đối tượng UdpClient nhưng không gán vào địa chỉ hay port nào • UdpClient(int port): Gán đối tượng UdpClient mới tạo vào một port... triệu gọi hàm Suspend() sẽ không có tác dụng Kết thúc một tiểu trình bằng cách nén ngoại lệ System.Threading.ThreadAbortException trong mã lệnh đang được chạy Mã lệnh của tiểu trình bị hủy có thể tắt ngoại lệ ThreadAbortException để thực hiện việc dọn dẹp, nhưng bộ thực thi sẽ tự động nén ngoại lệ này lần nữa 1.3 Đồng bộ và bất đồng bộ trong lập trình đa luồng Đôi khi có thể bạn muốn điều khiển việc truy... SendTimeout: Lấy hoặc thiết lập giá trị timeout của Socket 1.1.6.2 Lớp TCPListener: Cũng giống như lớp TcpClient, lớp TcpListener cũng cho phép chúng ta tạo ra các chương trình TCP Server một cách đơn giản Lớp TcpListener có ba phương thức tạo lập • TcpListener(int port): gắn một đối tượng TcpListener vào một port được chỉ ra trên máy cục bộ • TcpListener(IPEndPoint ie): gắn một đối tượng TcpListener vào... bằng cách đưa ra một event Ta sẽ cập nhật phương thức để cho phép dùng các event: • Ta sẽ viết một bộ xử lí event để đáp ứng đối với việc nhập của người dùng • Ta sẽ viết một phương thức để lấy và trình bày dữ liệu Phương thức này được thực thi khi ta không làm bất cứ điều gì khác Ta hãy xem cách phương thức lấy và trình bày trang web làm việc: đầu tiên nó sẽ tự định thời gian Trong khi nó đang chạy,... mạch trình được phép thay đổi hoặc sử dụng nguồn lực đó mà thôi Việc đồng bộ hóa được thể hiện thông qua một cái khóa được thiết lập trên đối tượng, ngăn không cho luồng nào đó truy cập khi mạch trình đi trước chưa xong công việc Trong phần này, ta sẽ là quen với cơ chế đồng bộ hóa mà Common Language Runtime cung cấp: lệnh lock Nhưng trước tiên, ta cần mô phỏng một nguồn lực được chia sẽ sử dụng bằng

Ngày đăng: 20/05/2016, 17:49

Từ khóa liên quan

Mục lục

  • Muc Lục

  • LỜI MỞ ĐẦU

  • LỜI CẢM ƠN

  • NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

  • Chương 1: CƠ SỞ LÝ THUYẾT VÀ ỨNG DỤNG

    • 1.1. Sơ lược về lập trình Socket

      • 1.1.1. Khái niệm IPAddress và Port

      • 1.1.2. Lớp IPAddress

      • 1.1.3. Lớp IPEndPoint

      • 1.1.4. Lập trình Socket hướng kết nối(TCP)

      • 1.1.5. Lập trình Socket phi kết nối(UDP)

      • 1.1.6. Lớp Helper của C# Socker

        • 1.1.6.1. Lớp TCPClient:

        • 1.1.6.2. Lớp TCPListener:

        • 1.1.6.3. Lớp UDPClient:

        • 1.2. Xử lý tiến trình trong lập trình đa luồng

          • 1.2.1. Khái niệm luồng

          • 1.2.2. Khảo sát namespace System.Threading

          • 1.3. Đồng bộ và bất đồng bộ trong lập trình đa luồng

          • 1.4. Hệ mã hóa công khai RSA

            • 1.4.1. Khái niệm mã hóa

            • 1.4.2. Hệ mã khóa

            • 1.4.3. Thuật toán mã hóa RSA

            • Chương 2: PHÂN TÍCH VÀ THIẾT KẾ CHƯƠNG TRÌNH

              • 2.1. Phân tích

                • 2.1.1. Phân tích nhu cầu thực tiễn

                • 2.1.2. Yêu cầu đề ra

Tài liệu cùng người dùng

Tài liệu liên quan