- 論壇徽章:
- 0
|
ssize_t sendmsg (int sockfd, struct msghdr *msg, int flags);
其中sockfd=socket(AF_INET6, SOCK_RAW, 88 );/* 88 是自己定義的 */
sendmsg可以帶輔助數(shù)據(jù),我使用的輔助數(shù)據(jù)類型cmsg_type = IPV6_PKTINFO
而struct in6_pktinfo中有ipi6_ifindex成員,我相使用它來接定發(fā)送的接口.
可實際上發(fā)送的數(shù)據(jù)確從所有接口發(fā)送出去.也就是指定無效.
-------
在使用recvmsg函數(shù)接收數(shù)據(jù)并判斷是從哪個接口接收到的數(shù)據(jù)時,也是使用這種輔助數(shù)據(jù),剛開使未成功.
后來設(shè)置了選項setsockopt (sockfd, IPPROTO_IPV6, IPV6_RECVPKTINFO, &on, sizeof(on));就可以了.
我懷疑是不是對于sendmsg也需要設(shè)置什么選項. |
|