나는 메시지를 incomming을 위해 UDP 소켓에서 수신 대기는 C 코드를 (그리고 그것을 잘 작동) : 그 후recvfrom을 사용하여 특정 호스트에서 UDP 데이터 그램을 수신하는 방법은 무엇입니까?
uint32_t udp_port = 101010; // example port
int sock_udp = socket(AF_INET, SOCK_DGRAM, 0);
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = htonl(INADDR_ANY);
server_address.sin_port = htons(udp_port);
bind(sock_udp, (struct sockaddr*) &server_address, (socklen_t) sizeof(server_address));
char buffer[20];
struct sockaddr_in sender_address;
socklen_t sender_len = (socklen_t) sizeof(struct sockaddr_in);
ssize_t rcv_len = recvfrom(sock_udp, buffer, sizeof(buffer), 0, (struct sockaddr *) &sender_address, &sender_len);
나는 SENDER_ADDRESS 구조에서 보낸 사람에 대한 정보를 가지고 내가, 포트 등의 요지를 확인하실 수 있습니다 제 질문은 : recv
, recvfrom
또는 다른 유사한 기능을 사용하여 특정 호스트에서 들어오는 데이터 그램을 수신 대기 할 수 있습니까? 즉, 다른 소스에서 데이터 그램을 읽지 않고 드롭 할 수 있습니까?
'recvfrom'을 호출하기 전에'sender_len'을 채워야합니다. –
True로 수정되었습니다. –