Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 48 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
48
Dung lượng
909,5 KB
Nội dung
TRƯỜNG ĐẠI HỌC KINH DOANH & CÔNG NGHỆ HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN -*&* - BÁO CÁO ĐỒ ÁN MƠN ĐIỆN TỐN DI ĐỘNG Đề Tài : Xây Dựng Phần Mềm Chat Tên Mạng Cục Bộ ( LAN ) Họ Và Tên : Nguyễn Minh Hiếu Mã Sinh Viên : 19140615 Lớp : TH24.06 Hà Nội 2022 MỤC LỤC Nội dung Chương 1: ĐẶT VẤN ĐỀ .5 1.1 Lý chọn đề tài: 1.2 Mục đích đề tài: .5 1.3 Đối tượng phạm vi nghiên cứu 1.3.1 Đối tượng nghiên cứu 1.3.2 Phạm vi nghiên cứu Chương 2: KIẾN THỨC ỨNG DỤNG 2.1 Sơ lược lập trình Socket: 2.1.1 Khái niệm Địa cổng (Address & Port) 2.1.2 Lớp IPAddress 2.1.3 Lớp IPEndpoint .8 2.1.4 Lớp UDP 2.1.5 Lớp TCP (TCPClient) 11 2.1.6 Lớp TcpListener .12 2.2 Sơ lược lập trình đa luồng: 14 2.2.1 Khái niệm Luồng (Thread) 14 2.2.2 Khảo sát namespace System.Threading 16 2.2.3 Đồng bợ hóa (Synchronization) lập trình đa luồng: 20 Chương 3: PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH .27 3.1 Phân tích 27 3.1.1 Phân tích nhu cầu thực tiễn: 27 3.1.2 Yêu cầu đề ra: 27 3.1.3 Mơ hình liệu mức quan niệm: 28 3.1.4 Phân tích thành phần xữ lý: .28 3.2 Thiết kế liệu 39 3.2.1 Chuẩn hóa liệu: 39 3.2.2 Mơ hình liệu mức vật lý: .40 3.2.3 Thiết kế liệu: .40 3.2.4 Mô tả ràng ḅc tồn vẹn: .41 3.3 Thiết kế giao diện 42 3.3.1 Màn hình đăng nhập 42 3.3.2 Màn hình 43 3.3.3 Màn hình thêm Friend 43 3.3.4 Màn hình xóa Friend .44 3.3.5 Màn hình Chat With 44 3.3.6 Màn hình Invite Group 45 3.3.7 Màn hình Invite Another 45 Chương 4: KẾT LUẬN 46 4.1 Kết đạt 46 4.2 Hướng phát triển 47 LỜI NÓI ĐẦU Thế giới ngày có nhiều phát triển mạnh mẽ công nghệ thông tin (CNTT) Từ một tiềm thông tin trở thành một tài nguyên thực , trở thành mợt hàng hóa xã hợi tạo thay đổi to lớn lực lượng sản xuất , sở hạ tầng , cấu trúc kinh tế , tính chất lao đợng cách thức quản lí lĩnh vực xã hợi Trong năm gần CNTT nước ta có nhiều phát triển lĩnh vực c̣c sống lĩnh vực quản lí xã hợi Mợt lĩnh vực mà máy tính sử dụng nhiều hệ thống thông tin quản lí nói chung Sự phát triển internet ,internet đưa người vào kỉ nguyên xa lộ thông tin mạng Thông tin qua mạng internet người mua bán hàng hóa , trao đổi thơng tin rợng rãi tồn cầu Cơng nghệ thúc đẩy mạnh mẽ việc khai thác thông tin mạng với tính linh hoạt dễ sử dụng Cùng với phát triển ngành cơng nghệ thơng tin máy tính trở nên gần gũi thông dụng với cuộc sống Khả hiệu hỗ trợ cơng việc khó khăn phức tạp lĩnh vực c̣c sống nói chung cơng tác quản lí doanh nghiệp , quan nói riêng bảo mật thông tin , xem chỉnh sửa thông tin một cách dễ dàng , hiệu nhanh chóng Đã có nhiều phần mềm xấy dựng để phục vụ cho tính chất phực tạp lĩnh vực c̣c sống nói chung cơng tác quản lý doanh nghiệp quan Trong suốt trình học tập , em thầy cô giáo cung cấp truyền đạt kiến thức cần thiết lĩnh vưc công nghệ thông tin Ngồi em cịn rèn luyện mợt tinh thần học tập , làm việc độc lập sang tạo Trong khuôn khổ một đề án môn học bảo tận tình thầy giáo ,cùng tích lũy kiến thức thân em xây dựng đề tài Chat mạng cục bộ gọi tắt “LAN CHAT” Chương 1: ĐẶT VẤN ĐỀ 1.1 Lý chọn đề tài: Hiện nay, mạng LAN có tiến bợ vượt bậc ngày phổ biến đồi sống sinh hoat Điều làm cho nhu cầu liên lạc trao đổi thông tin thông qua mạng LAN ngày lớn Chính vậy, chương trình Chat mạng LAN xây dựng để đáp ứng phần nhu cầu cấp thiết 1.2Mục đích đề tài: Xây dựng chương trình Chat hoạt đợng mạng LAN với chức như: gởi tin nhắn, tạo một nhóm Chat lưu thơng tin bạn bè 1.3 Đối tượng phạm vi nghiên cứu 1.3.1 Đối tượng nghiên cứu Tìm hiểu chế hoạt đợng Socket Thread NET Framwork từ viết ứng dụng Chat mạng LAN 1.3.2 Phạm vi nghiên cứu Chương trình Chat xây dựng với khả gởi văn qua lại user thông qua điều khiển một Server mạng LAN Chương 2: KIẾN THỨC ỨNG DỤNG 2.1 Sơ lược lập trình Socket: 2.1.1 Khái niệm Địa cổng (Address & Port) Ngun lý: Trong mợt máy có nhiều ứng dụng muốn trao ứng dụng khác thơng qua mạng (ví dụ có ứng dụng máy A muốn trao đổi với với ứng dụng máy B) Mỗi máy tính có mợt đường truyền liệu (để gửi nhận) Vấn đề : Rất xảy "nhầm lẫn" liệu từ máy A gửi đến máy B khơng biết liệu gửi cho ứng dụng máy B? Giải quyết: Mỗi ứng dụng máy B gán một số hiệu (mà ta quen 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ý, cịn trái lại khơng làm (vì khơng phải mình) Như vậy: Khi 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 (Address) số hiệu cổng (Port) ứng dụng 2.1.2 Lớp IPAddress Trên Internet mợt trạm (có thể máy tính, máy in, thiết bị …) có mợt định danh nhất, định danh thường gọi một địa (Address) Địa Internet mợt tập hợp gồm số có giá trị từ 0-255 cách dấu chấm Để thể địa này, người ta viết dạng sau: Tên : Ví dụ May01, Server, … Địa IP đặt một xâu: "192.168.1.1", "127.0.0.1" Đặt một mảng byte, byte chứa mợt số từ 0-255 Ví dụ để biểu diễn địa 192.168.1.1 với khai báo “byte[] DiaChi = new byte[4];”, ta viết: DiaChi(0) = 192; DiaChi(1) = 168; DiaChi(2) = 1; DiaChi(3) = 1; Hoặc mợt số (long), có đợ dài byte Ví dụ, với địa 192.168.1.1 giá trị là: 16885952 (đây số hệ thập phân xếp liền byte lại với 00000001 00000001 10101000 11000000 (Byte 0) 168 192 (Byte 3) Như vậy, để đổi một địa chuẩn dạng số ta việc tính tốn cho thành phần Ví dụ: Đổi địa 192.168.1.2 số, ta tính sau : * 256 ^ + 1* 256 ^ + 168 * 256 ^ + 192 * 256 ^ Trong NET, IPAddress một lớp dùng để mô tả địa Đây lớp sử dụng thao tác (truyền) vào lớp IPEndpoint, UDP, TCP, Socket … Bảng 2-1: Các thành phần lớp IpAddress Thành viên Static Mô tả Any Cung cấp một địa IP (thường 0.0.0.0) để Server phải lắng nghe hoạt động Client tất Card mạng (sử dụng xây dựng Broadcast Server) Tḥc tính đọc Cung cấp một địa IP quảng bá (Broadcast, thường Loopback 255.255.255.255), dạng số long Trả một địa IP lặp (IP Loopback, ví dụ AddressFamily 127.0.0.1) Trả họ địa địa IP hành Nếu địa dạng IPv4 kết Internetwork, Phương thức IPAddress(Int64) IPAddress(Byte[]) GetAddressByte () HostToNetworkOrder() InternetworkV6 địa IPv6 Mô tả Tạo địa IP từ một số long Tạo địa IP từ một mảng Byte Chuyển địa thành mảng Byte Đảo thứ tự Byte một số cho với thứ tự Byte địa IPAddress IsLoopback() Cho biết địa có phải địa lặp hay khơng? Ví dụ 1: Kiểm tra xem 192.168.1.300 có phải địa IP hợp lệ không private void KiemTra() { String Ip1 = "127.0.0.1"; String Ip2 = "999.0.0.1"; MessageBox.Show(IPAddress.TryParse(Ip1, new IPAddress(0))); MessageBox.Show (IPAddress.TryParse(Ip2, new IPAddress(1))); } Ví dụ 2: Chuyển địa hành mảng byte hiển thị thành sphần mảng private void KiemTra() { IpAddress Ip3 = new IPAddress(16885952); Byte[] b; b = Ip3.GetAddressBytes(); MessageBox.Show("Address: " & b(0) &"." & b(1) &"." & b(2)& "." & b(3)); } 2.1.3 Lớp IPEndpoint Trong mạng, để hai trạm trao đổi thơng tin với chúng cần phải biết địa (IP) số hiệu cổng mà hai bên dùng để trao đổi thông tin Lớp IPAddress cung cấp cho ta một vế địa IP (IPAddress), thiếu vế thứ hai số hiệu cổng (Port number) Như vậy, lớp IPEndpoint lớp chứa đựng IPAddress Port number Đối tượng IPEndpoint dùng sau để truyền trực tiếp cho đối tượng UDP, TCP… Bảng 2-2: Các thành viên lớp IpEndPoint Phương thức khởi tạo Mô tả IPEndPoint(Int64, Int32) Tạo một đối tượng lớp IPEndPoint, tham số truyền vào địa IP (ở dạng số) IPEndPoint(IPAddress, cổng dùng để giao tiếp Tạo một đối tượng lớp IPEndPoint, Int32) Tham số truyền vào một địa IPAddress Thuộc tính Address số hiệu cổng dùng để giao tiếp Mơ tả Trả thiết lập địa IP cho Endpoint (trả AddressFamily một đối tượng IPAddress) Lấy loại giao thức mà Endpoint sử Port Phương thức Create() dụng Lấy gán số hiệu cổng Endpoint Mô tả Tạo một Endpoint từ một địa socket (socket address) ToString() Trả địa IP số hiệu cổng theo khuôn dạng địa chỉ: cổng Ví dụ: “192.168.1.1:8080” 2.1.4 Lớp UDP Giao thức UDP (User Datagram Protocol hay User Define Protocol) một giao thức phi kết nối (connectionless) có nghĩa mợt bên gửi liệu cho bên mà không cần biết bên sẵn sàng hay chưa? (Nói cách khác không cần thiết lập kết nối hai bên tiến hành trao đổi thông tin) Giao thức không tin cậy giao thức TCP tốc đợ lại nhanh dễ cài đặt Ngồi ra, với giao thức UDP ta cịn gửi gói tin quảng bá (Broadcast) cho đồng thời nhiều máy Trong NET, lớp UDPClient (nằm namesapce System.Net.Sockets) đóng gói chức giao thức UDP Bảng 2-3: Các thành viên lớp UDPClient Phương thức khởi tạo Mô tả UdpClient () Tạo một đối tượng (thể hiện) lớp UdpClient (AddressFamily) UDPClient Tạo một đối tượng (thể hiện) lớp UDPClient Tḥc mợt dịng địa UdpClient (Int32) UdpClient (IPEndPoint) (AddressFamily) định Tạo một UdpClient gắn (bind) mợt cổng cho Tạo mợt UdpClient gắn (bind) một IPEndpoint UdpClient(Int32, (gán địa IP cổng) cho Tạo mợt UdpClient gán số hiệu cổng, AddressFamily) UdpClient(String, Int32) AddressFamily Tạo một UdpClient thiết lập với một trạm từ xa Phương thức BeginReceive() BeginSend() Close() Connect() EndReceive() EndSend() mặc định Mô tả Nhận liệu Không đồng bộ từ máy xa Gửi không đồng bộ liệu tới máy xa Đóng kết nối Thiết lập mợt Default remote host Kết thúc nhận liệu không đồng bộ Kết thúc việc gửi liệu không đồng bộ Receive (ref IPEndPoint) Nhận liệu (đồng bộ) máy xa gửi (Đồng bợ có nghĩa lệnh sau lệnh Receive thực thi Receive nhận liệu Còn chưa nhận – dù mợt chút Send() – chờ (blocking)) Gửi liệu (đồng bợ) cho máy xa Ví dụ 1: Tạo một UDPClient gắn vào cổng 10 Gửi một gói tin "Hello" tới mợt ứng dụng UDP khác chạy máy có địa "127.0.0.1" cổng 1000 using System.Net; using System.Net.Sockets; public class UdpTest { const LOCAL_PORT = 10; const REMOTE_PORT = 1000; // Tạo UDP gắn (Bind) vào cổng 10 UpdCleint Sender = new UdpClient(LOCAL_PORT); privte void Gửi_Dữ_Liệu() { // Chuyển chuỗi "Hello there !" thành mảng byte để gửi Byte[] msg = System.Text.Encoding.UTF8.GetBytes("Hello there !"); // Gửi vào cổng 1000 máy 127.0.0.1 Sender.Send(msg, msg.Length, "127.0.0.1", REMOTE_PORT); } } Ví dụ 2: Tạo một UDPClient gắn vào cổng 1000 nhận liệu từ ứng dụng khác gửi đến using System.Net; using System.Text; using System.Net.Sockets; namespace Test { public class UdpTest const LOCAL_PORT = 1000; const REMOTE_PORT = 10; UpdClient Receiver = new UdpClient(LOCAL_PORT); private void Nhận_Dữ_Liệu() { IPEndPoint ep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 100); 10 ... một số từ 0-2 55 Ví dụ để biểu di? ??n địa 192.168.1.1 với khai báo “byte[] DiaChi = new byte[4];”, ta viết: DiaChi(0) = 192; DiaChi(1) = 168; DiaChi(2) = 1; DiaChi(3) = 1; Hoặc mợt số... mợt vài hành đợng nó, cần mợt tham chiếu đến đối tượng luồng mà đại di? ??n cho luồng riêng Nó lấy mợt tham chiếu sử dụng tḥc tính static -CurrentThread- lớp Thread: Thread myOwnThread = Thread.CurrentThread;... nguyên đơn giản: counter Để bắt đầu, ta khai báo biến thành viên khởi gán zero: int counter = 0; 20 Bài toán đặt sau: luồng thứ đọc trị counter (0) gán giá trị cho biến trung gian (temp) Tiếp tăng