Thứ Sáu, 18 tháng 4, 2014

CHAT LAN C#. Phần 3: Code máy khách (Client). Gửi, nhận dữ liệu với máy chủ

thuvienwinform - Sau khi đã có máy chủ thì chỉ việc tạo các máy khách kết nối đến máy chủ để giao tiếp với nhau thui. Sau khi tạo được kết nối thì máy khách sẽ gửi dữ liệu đến máy chủ và nhận dữ liệu truyền về! Đơn giản hơn code trên máy chủ rất nhiều.

Tải về project: https://www.dropbox.com/s/3moekk8knkge5s4/thuvienwinform-CHATLANClient.rar (18KB)

Yêu cầu:
- Kết nối chung mạng với máy cái ChatLanServer.
- Máy khách không cần Ip tĩnh

Cụ thể các bước xây dựng một máy khách như sau:
1/ Tạo luồng kết nối TcpClient
2/ Kết nối đến máy chủ với địa chỉ ip và cổng xác định (là ip tĩnh và cổng được tạo cho chương trình ChatLanServer trên máy chủ)
3/ Thực hiên giao tiếp với máy chủ
4/ Đóng kết nối

Các biến:

//Địa chỉ mặc định
string IP = "127.0.0.1";
int PORT = 100;

//Các luồng
Thread thKetNoiDenServer, thKetNoiTaoServer;

//Biến dùng để gửi, nhận dữ liệu
byte[] dlNhan = new byte[1024];
byte[] dlGui = new byte[1024];

TcpClient Khach;


1/ Tạo luồng kết nối TcpClient

Khach = new TcpClient();

2/ Kết nối đến máy chủ với địa chỉ ip và cổng xác định

Khach.Connect(IPAddress.Parse(IP), PORT);

3/  Thực hiên giao tiếp với máy chủ

- Nhận dữ liệu: TcpClient.GetStream().Read

string tmp = "";
byte[] dlNhan = new byte[1024];
Khach.GetStream().Read(dlNhan, 0, 1024);
tmp = Encoding.Unicode.GetString(dlNhan);

- Gửi dữ liệu: TcpClient.GetStream().Write

byte[] dlGui = new byte[1024];
dlGui = Encoding.Unicode.GetBytes(txtGui.Text);
Khach.GetStream().Write(dlGui, 0, dlGui.Length);

4/ Đóng kết nối

Thêm mô tả tìm kiếm và Liên kết cố định để SEO chuẩn :)
 
Khach.Close();



Nếu bạn mua IP tĩnh thì nó trở thành chat online là truyện bình thường :) cho máy cài IP tĩnh đó chạy chương trình server và các máy khách kết nối đến là được

19-5-2015:
Thực ra với C# có nhiều cách để xây dựng một ứng dụng truyền dữ liệu qua mạng kiểu này. Sử dụng socket là cái nền tảng sơ khai nhất, mình sẽ hướng dẫn một bài khác cũng về vấn đề truyền dữ liệu qua mạng này trên một công nghệ khác (WCF hoặc Remote) đơn giản hơn nhiều, các bạn theo dõi blog để nhận bài sớm nhất nhé!

Không có nhận xét nào:

Đăng nhận xét