Lập trình mạng với socket: - Socket là một API cung cấp các phương thức để giao tiếp thông qua mạng.. - Thông qua giao diện này chúng ta có thể lập trình điều khiển việc truyền thông gi
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN MÔN HỌC LẬP TRÌNH MẠNG CĂN BẢN
Đề tài:
GAME CARO QUA MẠNG LAN
Giảng viên hướng dẫn: Sinh viên thực hiện:
ThS Trần Bá Nhiệm Dương Quang Huynh
09520113
Tp Hồ Chí Minh, tháng 8 năm 2012
Trang 2I Lập trình mạng với socket:
- Socket là một API cung cấp các phương thức để giao tiếp thông qua mạng
- Lập trình mức socket là nền tảng của lập trình mạng
- Thông qua giao diện này chúng ta có thể lập trình điều khiển việc truyền thông giữa hai máy sử dụng các giao thức mức thấp là TCP, UDP…
II Namespace System.Net và System.Net.Sockets:
- Lớp IPAddress: để chứa địa chỉ IP của máy trong mạng Một
số phương thức cần chú ý:
+ Phương thức khởi tạo:
IPAddress(Byte[]): tạo địa chỉ IP từ mảng byte (4 byte) IPAddress(Int64): tạo địa chỉ IP từ một số kiểu long
Trang 3CHƯƠNG 1: NỀN TẢNG KIẾN THỨC (TT)
+ Parse: chuyển IP dạng chuỗi về dạng IP chuẩn
+ TryParse: kiểm tra IP ở dạng chuỗi có hợ lệ hay không
- Lớp IPEndPoint: chứa địa chỉ IP và số hiệu cổng để giao tiếp qua
mạng Một số phương thức cần chú ý:
+ IPEndPoint(IPAddress, Int32): tạo một đối tượng
IPEndPoint mới, tham số truyền vào là một địa chỉ IPAddress và số hiệu cổng
+ ToString: trả về địa chỉ IP và số hiệu cổng theo dạng
IP:port Ví dụ: 192.168.1.10:3000
- Lớp DNS: phân giải tên miền đơn giản, lấy thông tin về máy cục bộ
như tên, địa chỉ… Một số phương thức cần chú ý:
+ GetHostEntry(IP/string Tenmay): phân giải tên hoặc địa
chỉ IP và trả về đối tượng IPHostEntry
+ GetHostByAddress(string IP): trả về thông tin của trạm có
địa chỉ IP được truyền vào
Trang 4III Giao thức UDP:
- UDP (User Datagram Protocol) là một giao thức cốt lõi của giao thức TCP/IP, thuộc loại phi kết nối (Connectionless)
- Giao thức UDP không tin cậy bằng giao thức TCP, tuy nhiên UDP
có tốc độ nhanh, dễ cài đặt và hiệu quả hơn đối với các gói tin kích thước nhỏ và yêu cầu khắt khe về thời gian Ngoài ra với giao thức UDP ta còn có thể gửi các gói tin quảng bá (broadcast)
- Trình tự kết nối:
Trang 5III Giao thức UDP (tt):
- Trong NET, lớp UDPClient đóng gói các chức năng của giao thức
UDP
- Các phương thức cần lưu ý trong lớp UDPClient:
+ UdpClient(): tạo đối tượng mới của lớp UDPClient
+ UdpClient(AddressFamily): tạo một đối tượng mới của
lớp UDPClient, thuộc một dòng địa chỉ được chỉ định
+ UdpClient(RemoteHost: String, Int32): tạo một UdpClient và thiết lập với một trạm từ xa mặc định
+ Connect: thiết lập một default remote host
+ Close: đóng kết nối
+ Receive(EndPoint của máy ở xa) As Byte(): nhận dữ liệu
đồng bộ do máy ở xa gửi
+ Send: gửi dữ liệu đồng bộ cho máy ở xa
CHƯƠNG 1: NỀN TẢNG KIẾN THỨC (TT)
Trang 6IV RegularExpressions:
- Regex là một biểu thức ở dạng chuỗi mô tả một quy tắc dùng để
so khớp mẫu văn bản
- Bất kỳ chuỗi đầu vào nào thỏa quy tắc này sẽ được coi là một chuỗi hợp lệ Việc sử dụng Regex sẽ giúp ta loại bỏ được các dữ liệu không hợp lệ trong quá trình nhập liệu
- Lớp Regex: lớp Regex tượng trưng cho 1 regular expression bất
di bất dịch (read-only) Nó cũng chứa một phương thức tĩnh (static) cho phép chúng ta sử dụng những lớp rex khác mà khỏi khởi tạo 1 đối tượng khác
Ví dụ:
string pattern = @"\s2000";
Regex myRegex = new Regex(pattern);
Trang 7IV RegularExpressions:
- Các thuộc tính của lớp Regex:
+Options: trả về những mục chọn được trao qua cho
constructor Regex
+ RightToLeft: nhận 1 trị cho biết liệu xem regular
expression dò tìm từ phải qua trái hay không
- Các phương thức của lớp Regex:
+ IsMatch: trả về trị bool cho biết liệu xem RE có tìm thấy
một so khớp hay không trên pattern
+Match: dò tìm trên pattern xem có xuất hiện một RE hay
không rồi trả về kết quả chính xác như là một đối tượng Match duy nhất
+ Matches: dò tìm trên pattern xem tất cả các xuất hiện của
một RE có hay không rồi trả về tất cả những so khớp thành công xem như Match được gọi nhiều lần
CHƯƠNG 1: NỀN TẢNG KIẾN THỨC (TT)
Trang 8V Đồ họa trong C#:
- Sử dụng các lớp được cung cấp bởi namespace System.Drawing
- Lớp Pen: khởi tạo một đối tượng dùng để vẽ đường thẳng
hoặc đường cong
+ Pen(Color): khởi tạo một đối tượng Pen có màu
truyền vào
+ Pen(Color, Single): khởi tạo một đối tượng Pen có màu và độ rộng truyền vào
- Lớp Graphic: các phương thức sử dụng
+ DrawImage(Image, Point): vẽ ra một hình ảnh giữ
nguyên kích thước tại một vị trí truyền vào
+ DrawLine(Pen, Int X1, Int Y1, Int X2, Int Y2): vẽ
một đường nối hai điểm có tọa độ (X1, Y1) và (X2, Y2)
Trang 9CHƯƠNG 2: GIỚI THIỆU CHƯƠNG TRÌNH
I Tổng quan:
- Ngôn ngữ lập trình: C# trên nền tảng NET Framework 4.0
- Công cụ lập trình: Microsoft Visual Studio 2010
- Công cụ thiết kế: Adobe Photoshop CS5, Microsoft Paint
II Giới thiệu chương trình:
1 Sơ đồ kết nối:
Trang 102 Giao diện và các chức năng của chương trình:
Thông tin của máy cục bộ, gồm tên máy và địa chỉ IP
Chọn hình thức kết nối là máy server hay máy client
Nhập tên của bạn và IP của máy đối thủ
Trang 11- Giao diện khi vào chương trình:
Bảng tỉ số
và quân
cờ 2 bên
Thông tin người chơi hiện tại
Thông tin đối thủ
Các nút chức năng: Nhập lại tin nhắn, Xóa
ô chat, Khóa/mở chức năng chat
Khung nhập tin
Nút kết nối với server
Nút bắt đầu trò chơi
Nút chọn quân cờ Nút thoát chương
trình
CHƯƠNG 2: GIỚI THIỆU CHƯƠNG TRÌNH (TT)
Trang 12- Giao diện khi đang chơi:
Khi đến lượt, nhấn chuột vào bất kì ô trống trên bàn
cờ để đặt quân cờ của mình
Trang 13- Hộp thoại thay đổi quân cờ:
CHƯƠNG 2: GIỚI THIỆU CHƯƠNG TRÌNH (TT)
Trang 14- Hộp thoại giúp đỡ:
Trang 15I Kết quả đạt được:
- Tìm hiểu và hiểu rõ hơn về các lớp, phương thức trong lập
trình mạng bằng C#
- Xây dựng được chương trình chơi cờ caro qua mạng LAN đơn giản theo mô hình Client-Server
II Ưu điểm, nhược điểm của chương trình:
1 Ưu điểm:
- Chương trình có giao diện thân thiện
- Có chức năng chat giữa 2 người chơi
2 Nhược điểm:
- Chương trình chưa có tùy chọn cho việc thay đổi luật chơi
- Khi chương trình đã chạy, không thể kết nối đến người chơi có địa chỉ IP khác so với lúc nhập ban đầu
CHƯƠNG 3: TỔNG KẾT
Trang 16III Hướng phát triển:
- Xây dựng chương trình với nhiều tùy chọn hơn nữa trong việc chơi game
- Giải quyết vấn đề không thể kết nối đến người chơi khác trong khi đang chạy chương trình
- Cải tiến giao diện đẹp hơn, thân thiện hơn
IV Tài liệu tham khảo:
- Slide bài giảng Lập trình mạng căn bản C# (ThS Trần Bá Nhiệm)
- Các giải pháp lập trình C# (Nguyễn Ngọc Bình Phương - Thái Thanh Phong)
- Các website:
http://www.codeproject.com/
http://msdn.microsoft.com/
http://forums.congdongcviet.com/