
socket_sendmsg 함수를 사용할 때, 소켓 옵션을 설정하는 방법은 다음과 같습니다.
1. 소켓 옵션을 설정하기 위해서는 socket 옵션 함수인 setsockopt을 사용합니다.
2. setsockopt 함수의 첫 번째 인자는 소켓 파일 디스크립터를 나타내는 파일 디스크립터입니다.
3. 두 번째 인자는 옵션의 타입을 나타내는 옵션 레벨입니다.
4. 세 번째 인자는 옵션의 이름을 나타내는 옵션 이름입니다.
5. 네 번째 인자는 옵션의 값을 나타내는 옵션 값입니다.
MSG_DONTROUTE 옵션을 사용할 때, 데이터 전송이 되지 않는 이유는 MSG_DONTROUTE 옵션을 사용하면 데이터가 라우팅을 거치지 않고 바로 전송되기 때문에, 라우팅 정보가 없을 때 데이터 전송이 되지 않는 것입니다.
MSG_DONTROUTE 옵션을 사용하기 전에, 라우팅 정보를 설정해야 합니다. 라우팅 정보를 설정하기 위해서는 route add 명령어를 사용합니다.
예를 들어, 라우팅 정보를 설정하기 위해서는 다음과 같이 사용할 수 있습니다.
#hostingforum.kr
c
#include
#include
#include
int main() {
int sock = socket(AF_INET, SOCK_DGRAM, 0);
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(1234);
inet_pton(AF_INET, "192.168.1.100", &addr.sin_addr);
// MSG_DONTROUTE 옵션 설정
int optval = 1;
setsockopt(sock, SOL_SOCKET, SO_DONTROUTE, &optval, sizeof(optval));
// 라우팅 정보 설정
system("route add -net 192.168.1.0/24 gw 192.168.1.1");
// 데이터 전송
char buf[] = "Hello, World!";
sendto(sock, buf, strlen(buf), 0, (struct sockaddr *)&addr, sizeof(addr));
return 0;
}
위의 예제에서 MSG_DONTROUTE 옵션을 설정하고 라우팅 정보를 설정한 후 데이터를 전송합니다.
2025-05-06 22:24