0
我試圖將套接字綁定到我的計算機上的特定網絡接口。我有兩個名爲interf0和interf1的網絡接口。我想要將套接字綁定到特定的接口,如interf0。我的操作系統是vxWorks 6.2。如何將套接字綁定到vxWorks中的特定接口
我想下面的代碼:
struct sockaddr_in fromAddr;
struct sockaddr_in sin;
int fromLen;
struct ip_mreq ipMreq;
int sockDesc;
STATUS temp;
if ((sockDesc = socket (AF_INET, SOCK_DGRAM, 0)) < 0)
{
printf (" cannot open recv socket\n");
return ERROR;
}
bzero ((char *)&sin, sizeof (sin));
bzero ((char *) &fromAddr, sizeof(fromAddr));
fromLen = sizeof(fromAddr);
#if 1
if ((temp = setsockopt(sockDesc, SOL_SOCKET, SO_BINDTODEVICE, "interf0", 7)) < 0)
{
perror("Server-setsockopt() error for SO_BINDTODEVICE");
printf("%s\n", strerror(errno));
close(sockDesc);
return ERROR;
}
#endif
sin.sin_len = (u_char) sizeof(sin);
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = INADDR_ANY;
//sin.sin_addr.s_addr = inet_addr(ifAddr);
/* UDP port number to match for the received packets */
sin.sin_port = htons (mcastPort);
/* bind a port number to the socket */
if (bind(sockDesc, (struct sockaddr *)&sin, sizeof(sin)) != 0)
{
perror("bind");
if (sockDesc != ERROR)
{
close (sockDesc);
}
return ERROR;
}
在這裏,它提供了一個錯誤說SO_BINDTODEVICE沒有定義。
是否有其他方式可以使用我可以綁定到vxWorks中的特定接口。
其他裁判:
bind socket to network interface
謝謝。
ifAddr在上面的代碼中是點表示法中接口的IP地址。然而,同樣的情況並沒有單獨工作。 (即通過setsockopt評論) – Jay
您是否嘗試過在vxWorks中使用SO_OUTIF?我們用它來設置vxWorks 5.5中的出站接口。 –