快速业务通道

Jeremiah的小程序之一:Linux下获取本机的IP地址

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-24
拥有帝国一切,皆有可能。欢迎访问phome.net (!writeSocket(sock, testAddr, testPort, 0, testString, testStrLength)) {
  • return 0;
  • }
  • unsigned char readBuffer[20];
  • struct timeval timeout;
  • timeout.tv_sec = 5;
  • timeout.tv_usec = 0;
  • int bytesRead = readSocket(sock, readBuffer, sizeof(readBuffer), &fromAddr,
  • &timeout);
  • if (bytesRead == 0 // timeout occurred
  • || bytesRead != (int) testStrLength || strncmp(
  • (char *) readBuffer, (char *) testString, testStrLength) != 0) {
  • printf("read socket errorn");
  • return 0;
  • }
  • uint32_t from = fromAddr.sin_addr.s_addr;
  • if (badAddress(from)) {
  • printf("This computer has an invalid IP address: 0x%xn",
  • (uint32_t) (ntohl(from))); 拥有帝国一切,皆有可能。欢迎访问phome.net
  • from = 0;
  • }
  • ourAddress = from;
  • if (sock >= 0) {
  • socketLeaveGroup(sock, testAddr.s_addr);
  • close(sock);
  • }
  • return ourAddress;
  • }
  • int setupDatagramSocket(uint16_t port) {
  • int reuseFlag = 1;
  • int newSocket = socket(AF_INET, SOCK_DGRAM, 0);
  • const uint8_t loop = 1;
  • if (newSocket < 0) {
  • printf("unable to create datagram socketn");
  • return newSocket;
  • }
  • if (setsockopt(newSocket, SOL_SOCKET, SO_REUSEADDR,
  • (const char *) &reuseFlag, sizeof(reuseFlag)) < 0) {
  • printf("setsockopt(SO_REUSEADDR) error!n" 拥有帝国一切,皆有可能。欢迎访问phome.netchar *) &imr,
  • sizeof(struct ip_mreq)) < 0) {
  • return 0;
  • }
  • return 1;
  • }
  • uint8_t IsMulticastAddress(uint32_t address) {
  • // Note: We return False for addresses in the range 224.0.0.0
  • // through 224.0.0.255, because these are non-routable
  • // Note: IPv4-specific #####
  • uint32_t addressInHostOrder = ntohl(address);
  • return addressInHostOrder > 0xE00000FF && addressInHostOrder <= 0xEFFFFFFF;
  • }
  • 拥有帝国一切,皆有可能。欢迎访问phome.net

    凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

    分享到: 更多

    Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

    地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

    电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

    《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号