本文整理汇总了C++中Address::getAddr方法的典型用法代码示例。如果您正苦于以下问题:C++ Address::getAddr方法的具体用法?C++ Address::getAddr怎么用?C++ Address::getAddr使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Address
的用法示例。
在下文中一共展示了Address::getAddr方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: send
int UdpSocket::send(Address addr, unsigned short port, const char* bytes, int len) {
if (addr.getType() != addr_type)
return 0;
char addr_buf[sizeof(sockaddr_in6)];
memset(addr_buf, 0, sizeof(sockaddr_in6));
if (addr_type == Address::IPV4) {
#if !defined(__ANDROID__)
((sockaddr_in*)addr_buf)->sin_len = sizeof(sockaddr_in);
#endif
((sockaddr_in*)addr_buf)->sin_family = AF_INET;
memcpy(&((sockaddr_in*)addr_buf)->sin_addr, addr.getAddr(), sizeof(in_addr));
((sockaddr_in*)addr_buf)->sin_port = htons(port);
} else {
#if !defined(__ANDROID__)
((sockaddr_in6*)addr_buf)->sin6_len = sizeof(sockaddr_in6);
#endif
((sockaddr_in6*)addr_buf)->sin6_family = AF_INET6;
memcpy(&((sockaddr_in6*)addr_buf)->sin6_addr, addr.getAddr(), sizeof(in6_addr));
((sockaddr_in*)addr_buf)->sin_port = htons(port);
}
return (int)sendto(fd, bytes, len, 0, (sockaddr*)addr_buf, addr_type == Address::IPV4 ? sizeof(sockaddr_in) : sizeof(sockaddr_in6));
}
示例2: joinMulticastGroup
bool UdpSocket::joinMulticastGroup(Address local, Address group) {
if (addr_type == Address::IPV4) {
struct ip_mreq g;
memcpy(&g.imr_multiaddr.s_addr, group.getAddr(), sizeof(in_addr));
memcpy(&g.imr_interface.s_addr, local.getAddr(), sizeof(in_addr));
if (setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&g, sizeof(ip_mreq)) == 0)
return true;
} else {
// TODO: Multicast listening with IPV6, in a cross platform manner
}
return false;
}