Đăng bởi : Nông Ngọc Hoà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é!
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.
ReplyDeleteViết code cho disconnect ở server nhé.
DeleteChưa có bài về WCF hoặc Remote à bạn
DeleteAdmin 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 .
ReplyDeleteCám ơn bạn !
Ý 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.
Deletecho len link khac di. link die roi
ReplyDeleteTiếc quá k còn project để tham khảo :((
ReplyDeleteanh cho em xin project được không? nếu được anh gửi vào mail ducthan72@gmail.com. Cảm ơn anh.
ReplyDelete