1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

32 3,5K 3

Đ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

Thông tin cơ bản

Định dạng
Số trang 32
Dung lượng 567,5 KB

Nội dung

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 ser

Trang 1

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

Trang 2

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áutrong 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ànthà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épnhng 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 2009Nhóm sinh viên thực hiện Phan Vô Song - Nguyễn Chí Hòa

Trang 3

Mục lục

Lời nói đầu 4

Chơng 1: Tổng quan về đề tài 5

1.1 Mạng, gói tin và giao thức 5

1.1.1 Mạng (Network) 5

1.1.2 Gói tin (Packets) 5

1.1.3 Giao thức (Porotocol) 5

1.2 Về địa chỉ và tên 5

1.2.1 Địa chỉ (address) 5

1.2.2 Tên (name) 6

1.3 Mô hình khách/chủ và mạng ngang hàng 7

1.3.1 Mô hình khách/chủ(Client/server) 7

1.3.2 Mô hình mạng ngang hàng (peer-to-peer) 9

1.4 Lập trình mạng thông qua socket 9

Chơng 2: Cơ bản về Socket 10

2.1 Khái niệm TCP , UDP và socket 10

2.2 Các lớp hỗ trợ lập trình socket trong C# 12

Chơng 3: Lập trình socket trong C# 13

3.1 Các th viện hỗ trợ trong C# 13

3.1.1 Sử dụng th viện System.Net 13

3.1.2 Sử dụng th viện System.Net.Socket 13

3.2 Lập trình đa luồng trong C# 15

Chơng 4: Xây dựng chơng trình Chat room 17

4.1 Bài toán Chat room 17

4.2 Cài đặt 17

4.2.1 Các quy ớc chung 17

4.2.2 Thiết kế giao diện chơng trình 20

4.2.3 Cài đặt chơng trình 22

a) Quá trình móc nối thông tin 22

b) Tổ chức một số lớp cơ bản 28

Tổng kết 34

4.1 Kết quả đạt đợc 34

4.2 Hạn chế 34

4.3 Hớng phát triển 34

Trang 4

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ờigiả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àycha đợ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

Trang 5

Chơng 1: Tổng quan về đề tài1.1 Mạng, gói tin và giao thức

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

Đị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ấttrong số các mạng hiện có

- 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à duynhấ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ả trongcùng mạng phải có cùng Net ID

Trang 6

- Phần thứ hai, Host ID xác định máy tính, router hoặc thiết bị mạngkhá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ỗimá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 trongkhoảng 0-255

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ềnthô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áccon 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

nh-ng để nhớ 207.46.230.219 thật khó khăn

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ênduy 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ạ

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

Trang 7

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 rathà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ữngnhiệ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àiGử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 đadạng có thể kể một số ứng dụng tiêu biểu sau:

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áckế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êucầ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ồmcó:

Trang 8

+ 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)

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ốinà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áychủ 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.

Trang 9

Chơng 2: Cơ bản về Socket2.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ẽ chiadữ 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ăngtruyề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ìnhtruyề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ụngcơ chế phát hiện lỗi

UDP (User Datagram Protocol) không phân đoạn dữ liệu, không cung cấpcơ 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ảnhồ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ố khái niệm về Socket:

- Hiện nay trên thế giới có hàng triệu máy tính kết nối internet Internet

ho phép những chơng trình trên những máy tính cách xa nhau hàng ngàndặm có thể giao tiếp và trao đổi thông tin Vậy làm thế nào để một chơngtrình giao tiếp với một chơng trình khác trên mạng? Câu trả lời thay đổituy thuộc vào ứng dụng và hệ điều hành, nhng phần lớn chơng trình để

truy cập mạng sử dụng giao diện lập trình ứng dụng “socket”.

Trang 10

- Socket là một trong những kỹ thuật cơ bản nhất trong truyền thông trên

mạng máy tính, là một phơng thức thực hiện truyền thông giữa các tiếntrình đợc BSD(Berkeley Software Distribution) đề xuất

- Các giao thức TCP và UDP làm nhiệm vụ vận chuyển giữ liệu giữa cácmáy tính, nên để biết đợc dữ liệu này là của chơng trình nào trên máy ngời

ta sử dụng cổng giao thức có giá trị 1 đến 65535 đợc gọi là socket Vậy để

truyền giữ liệu từ ứng dụng của máy này đến ứng dụng của máy khác cần

biết đợc địa chỉ IP và Socket.

- Socket đợc sử dụng để một tiến trình giao tiếp với một tiến trình khác Hay nói cách khác socket là một thứ trừu tợng mà một ứng dụng sử dụng

để truyền và nhận dữ liệu nh cách mà một ứng dụng mở file để đọc hoặc ghi dữ liệu một cách ổn định Socket đóng vai trò giao tiếp giữa hai ứng

dụng ở hai máy nối mạng bằng cách một ứng dụng gửi dữ liệu đến ứng

dụng kia thông qua socket.

TCP Socket và UDP Socket:

- Ngày nay là stream sockets và datagram sockets

- Stream sockets sử dụng giao thức TCP truyền điểm đến điểm

(end-to-end) thông qua IP Nh vậy đây là một giao thức truyền đáng tin cậy vì sửdụng giao thức TCP để truyền tin

- Datagram sockets sử dụng UDP và cũng tơng tự nh TCP, nó cũng

truyền điểm đến điểm (end-to-end) thông qua IP

2.2 Các lớp hỗ trợ lập trình socket trong C#

Ngôn ngữ lập trình C# là một ngôn ngữ mạnh hiện nay, với một th việnkhổng lồ, thêm vào đó là bộ soạn thảo hỗ trợ ngời lập trình đạt hiệu quả caonhất Một số lớp cơ bản mà ngôn ngữ lập trình C# hỗ trợ:

Trang 11

Trong System.Net cã mét sè líp hay dïng:

Trang 12

Chơng 3: Lập trình socket trong C#

3.1 Các th viện hỗ trợ trong C#

3.1.1 Sử dụng th viện System.Net

Dns(Domain Name System): Là một dịch vụ dò tìm trong Microsoft Windows, nó định vị một máy trên mạng dựa vào IP và là một giao thức chuẩn

công nghiệp Đối với máy tính thì các địa chỉ IP (nh là 207.45.131.137) mới là

đáng tin cậy, tuy nhiên đối với ngời sử dụng thì nhớ tên (nh làwww.microsoft.com) dễ dàng hơn Nên Dns đợc sử dụng để ánh xạ qua lại giữatên và địa chỉ IP Một số phơng thức:

- Lấy thông tin về một máy tính:

public static IPHostEntry GetHostByAddress(IPAddress address)

public static IPHostEntry GetHostByAddress(string address)

public static IPHostEntry GetHostByName(string hostname)

- Lấy host name của máy tính:

public static string GetHostName()

Thực thi dịch vụ tìm kiếm thông tin về host:

Public static IPHostEntry Resolve(string hostname)

IPHostEntry: Cho biết thông tin về host nh mảng aliases và mảng địa chỉ IP IPAddress: Địa chỉ giao tiếp của một IP trên mạng.

IPEndPoint: Cho biết điểm kết nối đến trong mạng TCP/IP là địa chỉ IP và số

hiệu cổng (port)

EndPoint: Điểm kết nối đến trong mạng, lớp này có nguồn gốc từ lớp

IPEndPoint

3.1.2 Sử dụng th viện System.Net.Socket

TcpListener: Dùng để lắng nghe (chờ) kết nối từ những máy trong mạng Thiết lập miền địa chỉ IP và cổng để lắng nghe, và gọi phơng thức Start() để có thể bắt đầu lắng nghe AcceptTcpClient() và AcceptSocket() là hai phơng thức lắng nghe kết nối trả về lần lợt là TcpClient và Socket Khi đó đã thực sự kết nối

và có thể gửi và nhận dữ liệu Sẽ dừng lắng nghe khi phơng thức Stop() đợc gọi

và ngừng kết nối khi TcpListener gọi phơng thức Close() hay Socket gọi phơng thức Shutdown().

TcpClient: Khi đang kết nối, thông qua phơng thức Getstream() truy cập

đến NetworkStream và đây là phơng thức dùng để gửi, nhận dữ liệu.

NetworkStream: Là một lớp con của lớp Stream, và phục vụ vào ra các luồng dữ liệu cho network.

Trang 13

UdpClient: Sử dụng phơng thức kết nối UDP để gửi nhận dữ liệu Vì UDP

là một giao thức phi kết nối, có thể gửi và nhận dữ liệu mà không cần thiết lậpkết nối Bạn có thể thiết lập theo hai cách: Kết nối ngay lúc khởi tạo hoặc gọi ph-

ơng thức connect sau khi khởi tạo Một số phơng thức:

- Ngừng kết nối:

public void Close()

- Kết nối đến máy khác:

public void Connect(IPEndPoint endPoint)

public void Connect(IPAddress addr, int port)

public void Connect(string hostname, int port)

- Nhận dữ liệu:

public byte[] Receive(ref IPEndPoint remoteEP)

- Gửi dữ liệu:

public int Send(byte[] dgram, int length)

public int Send(byte[] dgram, int length, IPEndPoint endPoint)

Socket: Lớp cung cấp nhiều phơng thức và thuộc tính để giao tiếp mạng Lớp socket cho phép truyền dữ liệu cả hai dạng đồng bộ và không đồng bộ Để

sử dụng một socket thực hiện các bớc:

- Khởi tạo socket

- Nếu socket là server, gọi phơng thức Bind() để gán một endpoint.

- Nếu socket là client, gọi phơng thức Connect() để kết nối đến endpoint

- Nếu socket là server, gọi phơng thức Listen() để bắt đầu lắng nghe kết nối, và gọi phơng thức Accept() để khôi phục kết nối.

- Sử dụng hai phơng thức Send() và Recceive() để truyền và nhận dữ liệu bằng giao thức TCP or SendTo() và RecceiveFrom() để truyền và nhận

dữ liệu bắng giao thức UDP

- Gọi Shutdown() để shutdown.

- Gọi Close() để đóng socket.

3.2 Lập trình đa luồng trong C#

Khi chơng trình thực thi thực hiện giao tiếp với máy khác qua socket thì các thao tác với cửa sổ(form) sẽ bị chặn Có nghĩa là trong thời gian xử lý với socket nh lắng nghe, truyền nhận dữ liệu thì mọi thao tác trên cửa sổ đều không

đợc do đang thực hiện trên một luồng (luồng của form) Mà việc socket lắng

Trang 14

nghe là thờng xuyên vì vậy để tránh điều đó chúng ta phải sử dụng thêm các

luồng khác

Ví dụ nh khi một máy giao tiếp với máy khác thì luôn có một luồng lắng nghe để biết đợc lúc nào trao đổi thông tin, dữ liệu Nh vậy việc sử dụng đa

luồng là cần thiết

Với Net Framework, bạn có thể tạo ra ứng dụng có nhiều luồng một cách

đơn giản và dễ dàng Việc tạo một luồng mới rất đơn giản, chỉ việc khai báo và

cung cấp cho nó một phơng thức và start để luồng đợc bắt đầu Khi đã luồng thực sự đợc thực thi băng cách gọi phớng thức Thread.Start

public static void Main(){

Console.WriteLine(“Main thread: Start a second thread.”);Thread t = new Thread(new ThreadStart(ThreadProc));

t.Join();

Trang 15

Console.WriteLine(“Main thread: ThreadProc.Join hasreturned Press Enter to End program.”);

Console.ReadLine();

}}

Trang 16

Chơng 4: Xây dựng chơng trình Chat room4.1 Bài toán Chat room

Thiết kế và cài đặt chơng trình Chat room Chat room: Là tạo phòng chát trong mạng LAN (Local Area Network), ở đó mọi ngời nhìn thấy nhau qua nick name có thể trò chuyện, trao đổi dữ liệu với nhau và có trò chơi caro giữa 2 ngời

để giải trí

Chat public: Nơi mọi ngời có thể nhìn thấy nhau, có thể thảo luận và gửi

thông tin đến tất cả mọi ngời và nhận thông tin từ tất cả mọi ngời Là cửa sổchính từ đó thực hiện các chức năng khác

Chat private: Là cửa sổ để trao đổi riêng với ngời khác.

Gửi nhận tệp: Mỗi ngời có thể gửi nhận tệp từ ngời khác

Chơi caro: Mỗi ngời có thể chơi caro với một ngời khác

4.2 Cài đặt

4.2.1 Các quy ớc chung

Để thức hiện trao đổi thông tin giữa các máy cần có một số quy ớc

Quy ớc cấu trúc message gửi đi: <phần đầu> + @ + <phần dữ liệu>

<phần đầu>: <tín hiệu móc nối> + @ + <host name> + @ + <nick name>.

<phần dữ liệu>: <dữ liệu> + @ + <dữ liệu>

Message: Là thông điệp để các chơng trình trao đổi thông tin.

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

w