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

Đăng bởi : 4/19/2014

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é!


{ 8 comments }

  1. Lỗi rồi bác, đóng client nhiều lần thì server sẽ bị lỗi. Bác có cách nào khắc phục không vậy? Thanks bác nhiều.

    ReplyDelete
    Replies
    1. Viết code cho disconnect ở server nhé.

      Delete
    2. Anonymous9/07/2015

      Chưa có bài về WCF hoặc Remote à bạn

      Delete
  2. Anonymous9/09/2015

    Admin có ý tưởng nào trong việc hiện thị ảnh ko ? mình đang định làm ứng dụng dạng chat như dạng skype có thể hiện thị cả text cùng ảnh mà chưa tìm được control thích hơp .
    Cám ơn bạn !

    ReplyDelete
    Replies
    1. Anonymous12/11/2015

      Ý tưởng của mình là những cái ảnh sẽ được gắn với 1 chuỗi nhận dạng sau khi gửi lên server đến máy kia thì sẽ so sánh và hiển thị ra hình ảnh tương ứng.

      Delete
  3. Anonymous4/05/2016

    cho len link khac di. link die roi

    ReplyDelete
  4. Tiếc quá k còn project để tham khảo :((

    ReplyDelete
  5. anh cho em xin project được không? nếu được anh gửi vào mail ducthan72@gmail.com. Cảm ơn anh.

    ReplyDelete

Nhận ngay 100$ cho VPS

Mua hàng ủng hộ page

Ủng hộ page

Nhãn

Code (45) Team Foundation Server (17) Database (14) News (14) product (13) toolbox (10) Linq (9) SoftDesign (8) XNA (6) API (5) Project (5) item (4)

- Bản quyền thuộc về Thư Viện WinForm - Giao diện: Metrominimalist - Thiết kế: Johanes Djogan -