-
23-12-2007, 09:53 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Lập trình mạng với C#: Server kiểm soát được thời điểm Client ngắt kết nối?
Mình đang thử viết một chương trình chat Multiclient. Vấn đề mình đang gặp phải là không thấy có sự kiện nào cho phép Server biết được Client đã disconnect , nghĩa là khi socket bên phía client gọi phương thức Disconnect thì bên Server sẽ nhận được sự kiện này và hủy socket gắn với client này và cập nhật các thông tin trên form.
(trong các MSDN thì chỉ thấy nói là khi không nhận được data thì nghĩa là client đã đóng kết nối nhưng cách này mình thấy không ổn lắm).
Mong các bạn giúp đỡ!View more random threads:
- Đóng và Mở Khóa thư mục Windows trong C#?
- Cách chạy video trên picturebox như thế nào ?
- Ảnh hiển thị trên form
- Không thấy biểu tượng Window Media Player trong Toolbar VS C# 2008
- Cách Clear DataGridView trong C# như thế nào ?
- Lập trình xử lý webcam trong mạng LAN?
- ẩn icon của winform trong C# như thế nào?
- Thêm một dòng vào DataTable không được !
- Tạo checkbox trong listview như thế nào?
- Truy xuất dữ liệu ra .xls và .doc
-
23-12-2007, 01:36 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi tienthanh_tn
Và một cách khác mà mình nghĩ đến là cứ để mặc kệ client disconnect, tại server khi nào gửi message mà thấy socket nào đó có lỗi thì xác định lỗi và giải phóng socket đó.
Đó là cách mình làm, còn tại server không biết có thuộc tính nào nhận biết khác không (đã thử tìm nhưng không thấy).
Chúc bạn thành công!!!!
-
28-03-2011, 05:08 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
mình cũng làm như cách trên đó là khi bạn ấn disconnet thì bạn sẽ dùng sự kiện đó để gửi 1 ký tự đặc biệt sang phía Sever để phía Sever biết giải phóng socket. Theo mình có thể đó là cáh giải quyết tốt nhất.
ai còn cách giải quyết nào khác trong C# không, giúp anh em tìm ra hướng giải quyết tốt nhất nhé.
-
28-03-2011, 05:19 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
nếu trường hợp client như bạn thì bạn có thể cho server trong khoảng thời gian nhất định thì gửi request đến client. nếu không có tín hiệu trả lời lại thì close kết nối đó là được
-
31-10-2011, 10:30 AM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Chào các bạn ! Mình cũng gặp trường hợp như này rồi nhưng chưa biết cách giải quyết như thế nào cho hợp lý. Nếu như theo Thansautk nói thì khi đó server sẽ quá tải nếu có khoảng vài nghìn Client kết nối đến. Có bạn nào biết thì chỉ mình với???
-
31-10-2011, 02:26 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mã:bool SocketConnected(Socket s) { bool part1 = s.Poll(1000, SelectMode.SelectRead); bool part2 = (s.Available == 0); if (part1 & part2) return false; else return true; }
-
01-11-2011, 10:32 AM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mình thì dùng try catch để bắt exception trong lệnh đọc dữ liệu từ client về, mỗi khi client bị disconnect(ko cần biết vì lý do gì) thì lệnh đọc dữ liệu trên server từ client thì sẽ sinh ra exception.
-
01-11-2011, 05:52 PM #8Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi nhokviet
-
02-11-2011, 04:23 PM #9Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi phamliem
-
27-12-2011, 11:02 AM #10Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi nhokviet
Thông qua phân tích dữ liệu Google từ 86 quốc gia, mới đây, một công ty tại Anh đã công bố bảng xếp hạng kích tấc "cậu nhỏ" của các nước trên thế giới. Kết quả, hầu hết các nước xếp ở nhóm đầu của...
"Chim" của chàng trai Việt thuộc...