Tôi có một chương trình bao gồm máy chủ chính và máy chủ phụ được phân phối. Các máy chủ nô lệ gửi cập nhật trạng thái cho máy chủ, và nếu máy chủ không nghe từ một nô lệ cụ thể trong một khoảng thời gian cố định, nó đánh dấu nô lệ là xuống. Điều này đang xảy ra nhất quán.Không thể gán địa chỉ được yêu cầu - nguyên nhân có thể xảy ra?
Từ kiểm tra nhật ký, tôi thấy rằng nô lệ chỉ có thể gửi cập nhật trạng thái cho máy chủ, và sau đó không bao giờ có thể gửi cập nhật khác, luôn thất bại trong cuộc gọi để kết nối() "Không thể gán địa chỉ được yêu cầu (99)
Rất kỳ quặc, nô lệ có thể gửi một số cập nhật khác cho máy chủ và tất cả các kết nối đang diễn ra trên cùng một cổng. Có vẻ như nguyên nhân phổ biến nhất của lỗi này là kết nối để mở, nhưng tôi gặp khó khăn khi tìm thấy bất kỳ nội dung nào còn mở, có các giải thích khác có thể không?
Để làm rõ, đây là cách tôi đang kết nối:
struct sockaddr *sa; // parameter
size_t sa_size; //parameter
int i = 1;
int stream;
stream = socket(AF_INET,SOCK_STREAM,0);
setsockopt(stream,SOL_SOCKET,SO_REUSEADDR,&i,sizeof(i));
bindresvport(stream,NULL);
connect(stream,sa,sa_size);
Mã này nằm trong chức năng để có được kết nối với máy chủ khác và lỗi trên bất kỳ cuộc gọi nào trong số 4 cuộc gọi đó khiến chức năng bị lỗi.
Tôi đã xác minh rằng địa chỉ cổng và địa chỉ IP đều chính xác. – dbeer