Tôi cần gửi một số dữ liệu đến máy chủ từ xa qua UDP trong một cổng cụ thể và nhận được phản hồi từ cổng đó. Tuy nhiên, nó đang chặn và tôi không nhận được bất kỳ phản ứng nào. Tôi cần phải kiểm tra xem giá trị addrinfo mà tôi nhận được từ getaddrinfo(SERVER_NAME, port, &hints, &servinfo)
có đúng hay không.Cách lấy số cổng từ addrinfo trong unix c
Làm cách nào để nhận số cổng từ cấu trúc dữ liệu này?
Tôi biết inet_ntop(p->ai_family, get_in_addr((struct sockaddr *)p->ai_addr),s, sizeof s)
cung cấp cho tôi địa chỉ IP máy chủ. (Tôi đang sử dụng các phương pháp trong hướng dẫn Beej của.)
này dường như làm việc ... tôi thấy rằng cổng là chính xác, tuy nhiên tôi nhận được một "Lỗi nhận được trong UDP: Kết nối từ chối" khi tôi cố gắng để có được một phản ứng từ máy chủ. tại sao một vấn đề như vậy lại nảy sinh? tôi đã thử kết nối UDP – sfactor
"Kết nối bị từ chối" thường có nghĩa là không có quá trình nghe trên cổng đích mà bạn chỉ định. Nó cũng có thể chỉ ra rằng có một bức tường lửa ngăn cản bạn gửi đến máy chủ/cổng đó. –
Không quan trọng lắm, nhưng người ta có thể khẳng định (sa-> sa_family == AF_INET6) 'đối với trường hợp khác, vì cũng có' AF_IRDA', 'AF_BTH' (Bluetooth),' AF_IPX', 'AF_APPLETALK',' AF_NETBIOS' và có thể các gia đình giao thức khác chưa được phát minh. –