2014年1月20日
摘要: 在接受到UDP包后,有时候我们需要根据所接收到得UDP包,获取它的路由目的IP地址和头标识目的地址。(一)主要的步骤:在setsockopt中设置IP_PKTINFO,然后通过recvmsg来获取struct in_pktinfo(struct in_pktinfo是struct msghdr中msg_control的成员).in_pktinfo结构体(如下所示),我们可以从in_pktinfo中获取路由目的地址(destination address of the packet)、头标识目的地址(source address of the packet)。这种方法只能用于UDP(数据报)传输 阅读全文
posted @ 2014-01-20 15:22 单车博客园 阅读(1072) 评论(0) 推荐(0)
摘要: struct sockaddr addr;struct sockaddr_in* addr_v4;int addr_len = sizeof(addr);//获取local ip and portZeroMemory(&addr, sizeof(addr));if (0 == getsockname(s, &addr, &addr_len)){if (addr.sa_family == AF_INET){ addr_v4 = (sockaddr_in*)&addr; cMonitorInf.nSourceIP = addr_v4->sin_addr.S_u 阅读全文
posted @ 2014-01-20 13:37 单车博客园 阅读(2067) 评论(0) 推荐(0)
摘要: 在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题。这时就可能用到htons(), ntohl(), ntohs(),htons()这4个网络字节顺序与本地字节顺序之间的转换函数:htonl()--"Host to Network Long int"32Bytes ntohl()--"Network to Host Long int"32Bytes htons()--"Host to Network Short int" 16Bytes ntohs()--"Network to Host Short in 阅读全文
posted @ 2014-01-20 12:08 单车博客园 阅读(653) 评论(0) 推荐(0)