Tôi có một ứng dụng cần gửi một số dữ liệu đến máy chủ tại một thời điểm nào đó. Cách dễ dàng là đóng kết nối và sau đó mở lại khi tôi muốn gửi một thứ gì đó. Nhưng tôi muốn giữ kết nối mở để khi tôi muốn gửi dữ liệu, trước tiên tôi kiểm tra kết nối bằng chức năng này:Kiểm tra xem ổ cắm có được kết nối hay không
bool is_connected(int sock)
{
unsigned char buf;
int err = recv(sock,&buf,1,MSG_PEEK);
return err == -1 ? false : true;
}
Phần xấu là điều này không hiệu quả. Nó treo khi không có dữ liệu để nhận. Tôi có thể làm gì? Làm thế nào tôi có thể kiểm tra xem kết nối vẫn mở?
http://stackoverflow.com/questions/4142012/how-to-find-the-socket-connection-state-in-c – BoBTFish