Sử dụng chương lập trình socket với c# xây dựng chương trình chat room

36 3.4K 3
Sử dụng chương lập trình socket với c# xây dựng chương trình chat room

Đ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

Sö dông lËp tr×nh socket víi C# - X©y dùng ch¬ng tr×nh Chat room trêng ®¹i häc vinh khoa c«ng nghÖ th«ng tin -------  ------- Phan V« Song - NguyÔn ChÝ Hßa Sö dông lËp tr×nh socket víi C# X©y dùng ch¬ng tr×nh Chat Room §å ¸n tèt nghiÖp ®¹i häc Vinh, Tháng 5 - 2009 Phan V« Song & NguyÔn ChÝ Hßa Líp 45K - CNTT 1 Sử dụng lập trình socket với C# - Xây dựng chơng trình Chat room Lời cảm ơn Chúng em xin chân thành cảm ơn khoa Công nghệ thông tin Trờng Đại học Vinh đã tạo điều kiện cho chúng em học tập và thực hiện tốt đề tài này. Chúng em xin bày tỏ lòng biết ơn sâu sắc đến thầy Lê Văn Tấn đã tận tình hớng dẫn, chỉ bảo cho chúng em trong quá trình thực hiện đề tài này. Chúng em xin chân thành cảm ơn các thầy, cô trong khoa Công nghệ thông tin đã tận tình giảng dạy, trang bị cho chúng em những kiến thức quý báu trong những năm học vừa qua. Và luôn sẵn sàng chỉ bảo giúp đỡ chúng em hoàn thành đề tài này. Mặc dù đã cố gắng hoàn thành đề tài trong phạm vi và khả năng cho phép nhng chắc chắn sẽ không tránh khỏi những thiếu sót. Chúng em rất mong nhận đ- ợc sự thông cảm, góp ý và tận tình chỉ bảo của thầy, cô cùng các bạn. Vinh, tháng 05 năm 2009 Nhóm sinh viên thực hiện Phan Vô Song - Nguyễn Chí Hòa Phan Vô Song & Nguyễn Chí Hòa Lớp 45K - CNTT 2 Sö dông lËp tr×nh socket víi C# - X©y dùng ch¬ng tr×nh Chat room Môc lôc Lêi nãi ®Çu 4 Phan V« Song & NguyÔn ChÝ Hßa Líp 45K - CNTT 3 Sử dụng lập trình socket với C# - Xây dựng chơng trình Chat room Lời nói đầu Có thể nói sự phát triển vợt bậc của Công nghệ thông tin đã giúp con ngời giải quyết đợc rất nhiều bài toán, nhng một điều quan trọng ở đây là không chỉ đơn thuần là giải đợc bài toán đó mà là phơng pháp để giải bài toán đó nh thế nào và sao cho có hiệu quả nhất. Hầu hết trong tất cả các ứng dụng nh trình duyệt web, yahoo, team viewer, . đều sử dụng socket để truyền và nhận dữ liệu. Đối với mỗi máy tính nối mạng đợc đánh một địa chỉ IP nhất định. Tơng tự nh vậy socket đợc xem là địa chỉ của chơng trình. Nên việc sử dụng socket để truyền, nhận dữ liệu là khó có thể tránh đợc. Trong khi đó ở nớc ta vấn đề này cha đợc nhiều ngời quan tâm, và sử dụng rộng rãi. Với đề tài Sử dụng lập trình socket với C# - Xây dựng chơng trình Chat room mong sẽ giúp mọi ngời hiểu hơn, nắm vững hơn đặc biệt là qua ứng dụng Chat room trong mạng LAN, mà chúng tôi sẽ trình bày trong đề tài này. Nội dung của đề tài gồm Chơng 1: Tổng quan đề tài Chơng 2: Cơ bản về socket Chơng 3: Lập trình socket trong C# Chơng 4: Bài toán ứng dụng Chơng 5: Tổng kết Phan Vô Song & Nguyễn Chí Hòa Lớp 45K - CNTT 4 Sử dụng lập trình socket với C# - Xây dựng chơng trình Chat room Chơng 1: Tổng quan về đề tài 1.1. Mạng, gói tin và giao thức 1.1.1. Mạng (Network) Mạng máy tính là sự kết nối của các máy tính với nhau bằng đờng truyền vật lý theo một kiến trúc nào đó. Với mục đích trao đổi thông tin với nhau. Đờng truyền vật lý là môi trờng lan truyền tín hiệu từ máy tính này đến máy tính khác trong mạng. 1.1.2. Gói tin (Packets) Những gói tin hay thông tin của chúng ta ở đây là những chuỗi bytes có cấu trúc đợc những chơng trình gửi đi trên mạng. 1.1.3. Giao thức (Porotocol) Tập hợp các quy tắc, quy ớc theo đó các đối tợng tham gia có thể truyền thông với nhau đợc. 1.2. Về địa chỉ và tên 1.2.1. Địa chỉ (address) Mỗi máy trên mạng TCP/IP hay còn gọi là trạm TCP/IP đợc nhận dạng bằng 1 địa chỉ IP logic. Mỗi trạm hay mỗi thiết bị mạng sử dụng TCP/IP để truyền thông cần có 1 địa chỉ IP duy nhất. Địa chỉ IP cho biết vị trí của 1 hệ thống trong 1 mạng giống nh địa chỉ xác định ngôi nhà trên con đờng nào đó. Tơng tự nh 1 khu dân c. Địa chỉ IP phải là duy nhất trên toàn cầu và phải đợc viết dới dạng 1 định dạng chuẩn. Mỗi địa chỉ IP đợc chia thành 2 phần: Phần địa chỉ mạng (Net ID) và phần địa chỉ trạm (Host ID). - Net ID: Dùng để nhận dạng những hệ thống trong cùng 1 khu vực vật lý còn đợc gọi là phân đoạn (segment). Mọi hệ thống trong cung 1 phân đoạn phải có cùng địa chỉ mạng và phần địa chỉ mạng này là phải duy nhất trong số các mạng hiện có. Phan Vô Song & Nguyễn Chí Hòa Lớp 45K - CNTT 5 Sử dụng lập trình socket với C# - Xây dựng chơng trình Chat room - Host ID: Dùng để nhận dạng 1 trạm làm việc, 1 máy chủ, 1 Router hoặc trạm TCP/IP trong phân đoạn. Phần địa chỉ trạm cũng phải là duy nhất trong mạng. - Giống nh địa chỉ bu điện gồm 2 phần: Mã bu điện - Số nhà, tên đờng. Địa chỉ IP cũng vậy gồm: Net ID - Host ID. - Phần đầu tiên, Net ID nhận mạng mà máy tính nối tới, tất cả trong cùng mạng phải có cùng Net ID. - Phần thứ hai, Host ID xác định máy tính, router hoặc thiết bị mạng khác trong mạng. Host ID là duy nhất trong 1 mạng. - Sự kết hợp giữa Net ID và Host ID cho phép nhận dạng duy nhất mỗi máy tính riêng biệt. Các địa chỉ IP có chiều dài 32 bit đợc chia thành 4 dãy. Mỗi dãy gồm 8 bit (1Byte), mỗi byte đợc phân cách bằng 1 dấu (.), 1byte là 1 giá trị nằm trong khoảng 0-255. Ví dụ: Cho một địa chỉ IP: 192.168.3.1 Subnet mask: 255.255.254.0 Khi đó: IP 11000000.10101000.00000011.00000001 Subnet mask 11111111.11111111.11111110.00000000 Net ID 11000000.10101000.00000010.00000000 Host ID 00000000.00000000.00000001.00000001 1.2.2. Tên (name) Mỗi máy, mỗi trạm hay mỗi thiết bị mạng sử dụng TCP/IP để truyền thông đều sử dụng địa chỉ IP. Đối với các máy móc thiết bị thì việc sử dụng các con số là đơn giản dễ dàng nhng đối với con ngời là một vấn đề. Ví dụ để nhớ địa chỉ website www.microsoft.com là đơn giản và dễ dàng đối với con ngời nhng để nhớ 207.46.230.219 thật khó khăn. Phan Vô Song & Nguyễn Chí Hòa Lớp 45K - CNTT 6 Sử dụng lập trình socket với C# - Xây dựng chơng trình Chat room Vì vậy mỗi máy, mỗi trạm hay mỗi thiết bị nối mạng đều có một cái tên duy nhất. Và để thực hiện việc chuyển đổi giữa 2 kiểu địa chỉ này ngời ta sử dụng DNS (Domain Name Sytem) để ánh xạ. 1.3. Mô hình khách/chủ và mạng ngang hàng 1.3.1. Mô hình khách/chủ(Client/server) Có rất nhiều dịch vụ hỗ trợ trên internet nh email, nhóm tin (new group), chuyển tập tin, đăng nhập từ xa (remote login), truy tìm các trang web, . Những dịch vụ này đợc tổ chức và kiến trúc theo mô hình khách/chủ (mô hình client/server). Các chơng trình ở máy khách (client) nh trình duyệt (web browser) hay chơng trình gửi nhận email sẽ tao ra kết nối (connection) với một máy chủ ở xa (server). Sau đó gửi các yêu cầu đến máy chủ, các chơng trình dịch vụ trên máy chủ nh web server hay mail server, Sẽ xử lý những yêu cầu này và gửi kết quả ngợc về cho máy khách (chẳng hạn web server sẽ truy tìm và trả về cho máy khách các trang web theo địa chỉ mà máy khách đa đến còn mail server lu trử và gửi về cho máy khách những bức email mới). Thông thờng một dịch vụ trên máy chủ phục vụ rất nhiều máy khách. Khi thiết kế chơng trình theo mô hình khách chủ thông thờng ta phân ra thành hai phần, một phần là chơng trình viết chạy trên máy khách còn một phần là chơng trình viết chạy trên máy chủ. - Chơng trình viết chạy trên máy khách: + Các chơng trình ở máy khách nhìn chung thờng thực hiện những nhiệm vụ sau: Kết nối với máy chủ Nhận dữ liệu hay yêu cầu do ngời dùng nhập vào từ bên ngoài Gửi dữ liệu hay yêu cầu đến máy chủ để xử lý Trình bày kết quả trả về từ máy chủ cho ngời dùng xem + Các chơng trình thực hiện những tác vụ này ở máy khách rất đa dạng có thể kể một số ứng dụng tiêu biểu sau: Phan Vô Song & Nguyễn Chí Hòa Lớp 45K - CNTT 7 Sử dụng lập trình socket với C# - Xây dựng chơng trình Chat room Chơng trình đọc và gửi email: Tạo điều kiện cho ngời dùng gửi và nhận email. Soạn thảo email trớc khi gửi đi, lấy các bức email về từ máy chủ và cho xem nội dung của nó, quản lý các bức email theo ngày tháng, Các chơng trình gửi nhận email nối tiếng điển hình nh: Trên windows có Edora, OutLook, trên hệ UNIX có Pine, Elm, Trình duyệt (web browser): Dùng truy tìm và đọc các trang web trên mạng. Địa chỉ các trang web sẽ đợc các trình duyệt gửi đến máy chủ và máy chủ sẽ gửi trả về nội dung trang web bao gồm các dữ liệu nh văn bản, hình ảnh, âm thanh, Trình duyệt sẽ chịu tránh nhiệm trình bày kết quả trang web ra màn hình với những loại dữ liệu nhận đợc này. Các trình duyệt điển hình nh: Internet Explorer, Netscape Navigator và Firefox, - Các chơng trình viết chạy trên máy chủ: Các chơng trình thiết kế chạy trên máy chủ thờng phải lắng nghe các kết nối từ các chơng trình trên máy khách gửi đến. Tiếp nhận những yêu cầu từ máy khách sau đó xử lý và gửi trả kết quả xử lý về cho máy khách. Nh vậy chơng trình ở máy chủ đóng vai trò nh một dịch vụ (server) phục vụ cho máy khách. Có rất nhiều loại dịch vụ trên máy chủ, điển hình gồm có: + Email Server: Cung cấp dịch vụ email, các bức email do máy khách gửi đi sẽ đợc chơng trình mail server ở máy chủ quản lý lu trử tạm thời và dò tìm địa chị để gửi đợc email đến đích. + Web Server: Cung cấp dịch vụ dò tìm trang web trên máy chủ, khi máy khách yêu cầu lấy về một trang web (thờng yêu cầu này do các trình duyệt browser gửi đến) chơng trình web server sẽ đọc nội dung trang web và gửi toàn bộ về cho máy khách (trớc khi gửi đi có thể thực hiện một số thao tác biến đổi khác nh thông qua các chơng trình CGI hay Active save page,). 1.3.2. Mô hình mạng ngang hàng (peer-to-peer) Phan Vô Song & Nguyễn Chí Hòa Lớp 45K - CNTT 8 Sử dụng lập trình socket với C# - Xây dựng chơng trình Chat room Trong mô hình này, một máy tính vừa đóng vai trò là khách (client), vừa đóng vai trò là chủ(server). Một số ứng dụng thuộc mô hình này nh Gnutella, KaZaA. 1.4. Lập trình mạng thông qua socket Nh vậy trớc khi yêu cầu một dịch vụ trên máy chủ thực hiện điều gì đó máy khách (client) phải có khả năng kết nối đợc với máy chủ. Quá trình kết nối này đ- ợc ngôn ngữ lập trình C# thực hiện thông qua một cơ chế trừu tợng hóa gọi là socket (tạm dịch là cơ chế ổ cắm). Kết nối giữa máy khách và máy chủ tơng tự nh việc cắm phích điện vào ổ. Máy khách thờng đợc coi nh phích cắm còn máy chủ coi nh ổ cắm, một ổ cắm có thể cắm vào đó nhiều phích cắm khác nhau. Cũng nh một máy chủ có thể kết nối phục vụ cho rất nhiều máy khách. Nếu kết nối socket thành công thì máy khách và máy chủ có thể trao đổi dữ liệu với nhau thực hiện các yêu cầu về dịch vụ trên máy chủ. Việc kết nối theo cơ chế socket cần biết 2 thông tin chủ yếu là địa chỉ của máy cần kết nối và số hiệu cổng của chơng trình dịch vụ. Ngôn ngữ lập trình C# cung cấp 2 th viện cơ bản: System.Net và System.Net.Socket. Phan Vô Song & Nguyễn Chí Hòa Lớp 45K - CNTT 9 Sử dụng lập trình socket với C# - Xây dựng chơng trình Chat room Chơng 2: Cơ bản về Socket 2.1. Khái niệm TCP , UDP và socket TCP (Transmision Control Protocol): Giao thức TCP/IP là giao thức đợc sử dụng để truyền dữ liệu giữa 2 máy tính, dựa vào địa chỉ IP. Giao thức này sẽ chia dữ liệu gửi đi thành các gói tin. Đợc sử dụng cho các dịnh vụ với khả năng truyền dữ liệu lớn và một kết nối liên tục. Đảm bảo độ tin cậy trong quá trình truyền dữ liệu, cung cấp cơ chế phản hồi sau khi nhận đợc dữ liệu và có sử dụng cơ chế phát hiện lỗi. UDP (User Datagram Protocol) không phân đoạn dữ liệu, không cung cấp cơ chế tập hợp dữ liệu nhận cũng nh đồng bộ quá trình truyền nhận dữ liệu. Nếu có lỗi xảy ra bắt buộc phải thực hiện truyền lại dữ liệu. Không có cơ chế phản hồi sau khi nhận dữ liệu. Đây là giao thức truyền tin không đáng tin cậy. Một số ví dụ TCP/UDP: Dịch vụ Giao thức Cổng dịch vụ DNS lookup UDP 53 FTP TCP 21 HTTP TCP 80 POP3 TCP 110 Windows shared printer name lookup UDP 137 Telnet TCP 23 Một số khái niệm về Socket: Phan Vô Song & Nguyễn Chí Hòa Lớp 45K - CNTT 10 . 45K - CNTT 16 Sử dụng lập trình socket với C# - Xây dựng chơng trình Chat room Chơng 4: Xây dựng chơng trình Chat room 4.1. Bài toán Chat room Thiết kế. UdpClient - Socket. Phan Vô Song & Nguyễn Chí Hòa Lớp 45K - CNTT 12 Sử dụng lập trình socket với C# - Xây dựng chơng trình Chat room Chơng 3: Lập trình socket

Ngày đăng: 20/12/2013, 18:39

Từ khóa liên quan

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

Tài liệu liên quan