MINZKN의 블로그 http://www.minzkn.com/
BLOG main image

전체 (421)
minzkn™ (63)
Programming (276)
사용법/팁 (26)
타국에서 (15)
사진 (1)
퍼온글 (39)
조사 (0)
낙서장 (0)
서식/Template (0)
비밀글 (0)
Total : 270632
Today : 100
Yesterday : 188
6명이 RSS를 구독하고 있습니다.
간단히 구현한 ifconfig 예제
Programming/Network | 2007/05/08 12:16
2007/05/08 12:16 2007/05/08 12:16
span class=postbody이 소스는 ifconfig 의 간략한 구현예제 입니다. br / 하지만 다양한 플랫폼을 지원하기 위해서 범용적인 코드를 원한다면 br / 아래의 예제처럼 구현하기 보다는 pcap library 를 사용하기를 권합니다. br / br / /spantable align=center border=0 cellpadding=3 cellspacing=1 width=90%tbodytr tdspan class=genmedb코드:/b/span/td /tr tr td class=code br / /* br / Copyright (c) 2002 Information Equipment co.,LTD. br / All Right Reserved. br / br / Code by JaeHyuk Cho lt;minzkn@infoeq.co.krgt; br / br / - Simple is best br / br / */ br / br / #if !defined(DEF_ifconfig_c) br / #define DEF_ifconfig_c ifconfig.c br / br / #include lt;stdio.hgt; br / #include lt;unistd.hgt; br / #include lt;stdlib.hgt; br / #include lt;string.hgt; br / #include lt;sys/types.hgt; br / #include lt;sys/socket.hgt; br / #include lt;sys/ioctl.hgt; br / #include lt;netinet/in.hgt; br / #include lt;net/if.hgt; br / #include lt;netinet/if_ether.hgt; br / #include lt;arpa/inet.hgt; br / #include lt;netdb.hgt; br / #include lt;netinet/ether.hgt; br / br / int main(int s_Argc, char **s_Argv); br / br / int main(int s_Argc, char **s_Argv) br / { br / int s_SocketHandle;nbsp; nbsp; br / int s_RequestCount = 10; br / struct ifconf s_ifconfig; br / struct ifreq *s_ifrequest; br / struct sockaddr_in *s_SockAddr_In; br / br / char s_StringBuffer[1 lt;lt; 10]; br / char *s_MyTitle; br / char *s_MyDevice; br / char *s_MyIP, *s_MyBroadcastIP, *s_MyNetmaskIP; br / char *s_MyHWAddr; br / char *s_MyFlagString; br / intnbsp; s_MyFlags, s_MyMTU, s_MyMetric; br / fprintf(stdout, MZ_ifconfig v0.0.1b - Copyright(c)InfoEQ co.,LTD - %s %s\n, __DATE__, __TIME__); br / fprintf(stdout, Code by JaeHyuk Cho - lt;minzkn@infoeq.co.krgt;\n\n); br / s_SocketHandle = socket(AF_INET, SOCK_DGRAM, 0); br / if(s_SocketHandle gt;= 0) br / { br / nbsp; memset((void *)amp;s_ifconfig, 0, sizeof(struct ifconf)); br / nbsp; do br / nbsp; { br / nbsp; nbsp;if(s_ifconfig.ifc_buf)free(s_ifconfig.ifc_buf); br / nbsp; nbsp;s_ifconfig.ifc_len = sizeof(struct ifreq) * s_RequestCount; br / nbsp; nbsp;s_ifconfig.ifc_buf = malloc(s_ifconfig.ifc_len); br / nbsp; nbsp;if(s_ifconfig.ifc_buf) br / nbsp; nbsp;{ br / nbsp; nbsp; if(ioctl(s_SocketHandle, SIOCGIFCONF, amp;s_ifconfig) == 0) br / nbsp; nbsp; { br / nbsp; nbsp; nbsp;if(s_ifconfig.ifc_len lt; (sizeof(struct ifreq) * s_RequestCount)) br / nbsp; nbsp; nbsp;{ br / nbsp; nbsp; nbsp; s_ifrequest = s_ifconfig.ifc_req; br / nbsp; nbsp; nbsp; if(s_ifrequest) br / nbsp; nbsp; nbsp; { br / nbsp; nbsp; nbsp; nbsp;for(s_RequestCount = 0;s_RequestCount lt; s_ifconfig.ifc_len;s_RequestCount += sizeof(struct ifreq), s_ifrequest++) br / nbsp; nbsp; nbsp; nbsp;{ br / nbsp; nbsp; nbsp; nbsp; /* ------------------------------------------------------------------------ */nbsp; nbsp;nbsp; nbsp; nbsp; nbsp; br / nbsp; nbsp;s_MyDevice = strdup(s_ifrequest-gt;ifr_name); br / nbsp; nbsp; br / nbsp; nbsp;/* ioctl(s_SocketHandle, SIOCGIFADDR, s_ifrequest); */ br / nbsp; nbsp;s_SockAddr_Innbsp; nbsp; nbsp; nbsp;= (struct sockaddr_in *)(amp;s_ifrequest-gt;ifr_addr); br / nbsp; nbsp; nbsp; nbsp; s_MyIPnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; = strdup(inet_ntoa(s_SockAddr_In-gt;sin_addr));nbsp; nbsp; br / nbsp; nbsp;ioctl(s_SocketHandle, SIOCGIFBRDADDR, s_ifrequest);nbsp; nbsp; nbsp; nbsp; br / nbsp; nbsp;s_SockAddr_Innbsp; nbsp; nbsp; nbsp;= (struct sockaddr_in *)amp;s_ifrequest-gt;ifr_broadaddr; br / nbsp; nbsp; nbsp; nbsp; s_MyBroadcastIPnbsp; nbsp; nbsp;= strdup(inet_ntoa(s_SockAddr_In-gt;sin_addr));nbsp; nbsp; br / nbsp; nbsp;ioctl(s_SocketHandle, SIOCGIFNETMASK, s_ifrequest);nbsp; nbsp; nbsp; nbsp; br / nbsp; nbsp;s_SockAddr_Innbsp; nbsp; nbsp; nbsp;= (struct sockaddr_in *)amp;s_ifrequest-gt;ifr_netmask; br / nbsp; nbsp; nbsp; nbsp; s_MyNetmaskIPnbsp; nbsp; nbsp; nbsp;= strdup(inet_ntoa(s_SockAddr_In-gt;sin_addr));nbsp; nbsp; br / #if 0nbsp; nbsp; br / nbsp; nbsp;if(ioctl(s_SocketHandle, SIOCGIFHWADDR, s_ifrequest) == 0) br / nbsp; nbsp;{ br / nbsp; nbsp; unsigned char s_NullHWAddr[] = {0, 0, 0, 0, 0, 0}; br / nbsp; nbsp; nbsp; nbsp; nbsp;if(memcmp(amp;s_ifrequest-gt;ifr_hwaddr.sa_data[0], amp;s_NullHWAddr[0], sizeof(s_NullHWAddr)) == 0)strcpy(s_StringBuffer, ); br / nbsp; nbsp; else sprintf(s_StringBuffer, HWAddr %s, ether_ntoa((struct ether_addr *)s_ifrequest-gt;ifr_hwaddr.sa_data)); br / nbsp; nbsp;} br / nbsp; nbsp;else strcpy(s_StringBuffer, HWAddr lt;ERRORgt;); br / #else br / nbsp; nbsp;if(ioctl(s_SocketHandle, SIOCGIFHWADDR, s_ifrequest) == 0) br / nbsp; nbsp;{ br / nbsp; nbsp; sprintf(s_StringBuffer, HWAddr %s, ether_ntoa((struct ether_addr *)s_ifrequest-gt;ifr_hwaddr.sa_data)); br / nbsp; nbsp;} br / nbsp; nbsp;else strcpy(s_StringBuffer, HWAddr lt;ERRORgt;); br / #endif br / nbsp; nbsp;s_MyHWAddr = strdup(s_StringBuffer); br / nbsp; nbsp; br / nbsp; nbsp;if(ioctl(s_SocketHandle, SIOCGIFFLAGS, s_ifrequest) == 0)s_MyFlags = s_ifrequest-gt;ifr_flags; br / nbsp; nbsp;else s_MyFlags = 0; br / nbsp; nbsp; nbsp; nbsp;nbsp; nbsp;strcpy(s_StringBuffer, ); br / nbsp; nbsp;if(s_MyFlags == 0)strcpy(s_StringBuffer, [NO FLAGS]); br / nbsp; nbsp;else br / nbsp; nbsp;{ br / nbsp; nbsp; if(s_MyFlags amp; IFF_UPnbsp; nbsp; nbsp; nbsp; nbsp; )strcat(s_StringBuffer, UP );nbsp; nbsp; br / nbsp; nbsp; if(s_MyFlags amp; IFF_BROADCASTnbsp; nbsp;)strcat(s_StringBuffer, BROADCAST );nbsp; nbsp; br / nbsp; nbsp; if(s_MyFlags amp; IFF_DEBUGnbsp; nbsp; nbsp; nbsp;)strcat(s_StringBuffer, DEBUG );nbsp; nbsp; br / nbsp; nbsp; if(s_MyFlags amp; IFF_LOOPBACKnbsp; nbsp; )strcat(s_StringBuffer, LOOPBACK );nbsp; nbsp; br / nbsp; nbsp; if(s_MyFlags amp; IFF_POINTOPOINT )strcat(s_StringBuffer, POINTOPOINT );nbsp; nbsp; br / nbsp; nbsp; if(s_MyFlags amp; IFF_NOTRAILERSnbsp; )strcat(s_StringBuffer, NOTRAILERS );nbsp; nbsp; br / nbsp; nbsp; if(s_MyFlags amp; IFF_RUNNINGnbsp; nbsp; nbsp;)strcat(s_StringBuffer, RUNNING );nbsp; nbsp; br / nbsp; nbsp; if(s_MyFlags amp; IFF_NOARPnbsp; nbsp; nbsp; nbsp;)strcat(s_StringBuffer, NOARP );nbsp; nbsp; br / nbsp; nbsp; if(s_MyFlags amp; IFF_PROMISCnbsp; nbsp; nbsp;)strcat(s_StringBuffer, PROMISC );nbsp; nbsp; br / nbsp; nbsp; if(s_MyFlags amp; IFF_ALLMULTInbsp; nbsp; )strcat(s_StringBuffer, ALLMULTI );nbsp; nbsp; br / nbsp; nbsp; if(s_MyFlags amp; IFF_SLAVEnbsp; nbsp; nbsp; nbsp;)strcat(s_StringBuffer, SLAVE );nbsp; nbsp; br / nbsp; nbsp; if(s_MyFlags amp; IFF_MASTERnbsp; nbsp; nbsp; )strcat(s_StringBuffer, MASTER );nbsp; nbsp; br / nbsp; nbsp; if(s_MyFlags amp; IFF_MULTICASTnbsp; nbsp;)strcat(s_StringBuffer, MULTICAST );nbsp; nbsp; br / nbsp; nbsp;} br / nbsp; nbsp;s_MyFlagString = strdup(s_StringBuffer); br / br / nbsp; nbsp; nbsp; nbsp; s_MyTitle = strdup(Unknown); /* Not support */ br / nbsp; nbsp; br / nbsp; nbsp;if(ioctl(s_SocketHandle, SIOCGIFMTU, s_ifrequest) == 0)s_MyMTU = s_ifrequest-gt;ifr_mtu; br / nbsp; nbsp;else s_MyMTU = 0; br / nbsp; nbsp; br / nbsp; nbsp;if(ioctl(s_SocketHandle, SIOCGIFMETRIC, s_ifrequest) == 0)s_MyMetric = s_ifrequest-gt;ifr_metric; br / nbsp; nbsp;else s_MyMetric = 0; br / nbsp; nbsp; nbsp; nbsp; br / nbsp; nbsp;/* Print. */ br / nbsp; nbsp;fprintf(stdout, br / nbsp; nbsp;nbsp; nbsp;%-8s Link encap:%snbsp; %s\n br / nbsp; nbsp;nbsp; nbsp;%-8s inet addr %-15snbsp; Broadcast %-15snbsp; Netmask %-15s\n br / nbsp; nbsp;nbsp; nbsp;%-8s %s MTU:%d Metric:%d\n br / nbsp; nbsp;nbsp; nbsp;\n, br / nbsp; nbsp;nbsp; nbsp; nbsp; nbsp; s_MyDevice, s_MyTitle, s_MyHWAddr, br / nbsp; nbsp;nbsp; nbsp;, s_MyIP, s_MyBroadcastIP, s_MyNetmaskIP, br / nbsp; nbsp;nbsp; nbsp;, s_MyFlagString, s_MyMTU, s_MyMetric ? s_MyMetric : 1 br / nbsp; nbsp;nbsp; nbsp; nbsp; nbsp;); br / nbsp; nbsp; br / nbsp; nbsp;/* Free. */ br / nbsp; nbsp;if(s_MyTitlenbsp; nbsp; nbsp; )free(s_MyTitle); br / nbsp; nbsp;if(s_MyDevicenbsp; nbsp; nbsp;)free(s_MyDevice); br / nbsp; nbsp;if(s_MyIPnbsp; nbsp; nbsp; nbsp; nbsp;)free(s_MyIP); br / nbsp; nbsp;if(s_MyBroadcastIP)free(s_MyBroadcastIP); br / nbsp; nbsp;if(s_MyNetmaskIPnbsp; )free(s_MyNetmaskIP); br / nbsp; nbsp;if(s_MyHWAddrnbsp; nbsp; nbsp;)free(s_MyHWAddr); br / nbsp; nbsp;if(s_MyFlagString )free(s_MyFlagString); br / nbsp; nbsp; nbsp; nbsp; /* ------------------------------------------------------------------------ */nbsp; nbsp;nbsp; nbsp; nbsp; nbsp; br / nbsp; nbsp; nbsp; nbsp;} br / nbsp; nbsp; nbsp; } br / nbsp; nbsp; nbsp; break; br / nbsp; nbsp; nbsp;} br / nbsp; nbsp; nbsp;else s_RequestCount += 10; br / nbsp; nbsp; } br / nbsp; nbsp; else break; br / nbsp; nbsp;} br / nbsp; nbsp;else break; br / nbsp; }while(1);nbsp; br / nbsp; if(s_ifconfig.ifc_buf)free(s_ifconfig.ifc_buf); br / nbsp; close(s_SocketHandle);nbsp; nbsp;nbsp; br / } br / else fprintf(stderr, Can not open socket !!!\n); br / return(0); br / } br / br / #endif br / br / /* End of source */ br / /td /tr/tbody/tablespan class=postbody br / br / 위의 예제를 조금더 응용하여 br / 현재 내가 보유한 여러개의 IP중에서 어떤 IP가 route를 통하는지 br / 검출하는 간략한 예제입니다. br / 즉, 이것은 여러개의 IP를 가지고 있을때 이중에서 어떤것이 br / 인터넷으로 패킷이 탈수 있는지 검출하는 것입니다. br / 물론 이것은 너무 간략하게 구현하려고 약간의 case 에 대해서 버그가 존재합니다. 그것은 적절히 코드를 보강하면 됩니다. br / /spantable align=center border=0 cellpadding=3 cellspacing=1 width=90%tbodytr tdspan class=genmedb코드:/b/span/td /tr tr td class=code br / /* br / Copyright (c) 2002 Information Equipment co.,LTD. br / All Right Reserved. br / br / Code by JaeHyuk Cho lt;minzkn@infoeq.co.krgt; br / br / - Simple is best br / br / */ br / br / #include lt;stdio.hgt; br / #include lt;unistd.hgt; br / #include lt;stdlib.hgt; br / #include lt;string.hgt; br / #include lt;sys/types.hgt; br / #include lt;sys/socket.hgt; br / #include lt;sys/ioctl.hgt; br / #include lt;netinet/in.hgt; br / #include lt;net/if.hgt; br / #include lt;netinet/if_ether.hgt; br / #include lt;arpa/inet.hgt; br / #include lt;netdb.hgt; br / #include lt;unistd.hgt; br / #include lt;fcntl.hgt; br / br / int main(int s_Argc, char **s_Argv); br / br / int main(int s_Argc, char **s_Argv) br / { br / const char *c_Proc_Route = /proc/net/route; br / int s_SocketHandle, s_Handle, s_ReadBytes, s_RequestCount = 10; br / struct ifconf s_ifconfig; br / struct ifreq *s_ifrequest; br / struct sockaddr_in *s_SockAddr_In; br / char *s_MyDevice; br / char *s_MyIP, *s_MyBroadcastIP, *s_MyNetmaskIP, *s_RouteIP, *s_RouteName; br / char s_Buffer[ 32 lt;lt; 10 ]; br / br / s_RouteIP = s_RouteName = (char *)0; br / s_Handle = open(c_Proc_Route, O_RDONLY); br / if(s_Handle gt;= 0) br / { br / nbsp; s_ReadBytes = read(s_Handle, amp;s_Buffer[0], sizeof(s_Buffer) - 1); br / nbsp; close(s_Handle); br / nbsp; if(s_ReadBytes gt; 0) br / nbsp; { br / nbsp; nbsp;unsigned long s_Destination, s_Gateway, s_Flags, s_RefCnt, s_Use, s_Metric, s_Mask; br / nbsp; nbsp;char *s_TraceBuffer; br / nbsp; nbsp;int s_Index; br / nbsp; nbsp;s_Buffer[ s_ReadBytes ] = '\0'; br / nbsp; nbsp;s_Index = 0; br / nbsp; nbsp;s_TraceBuffer = (char *)(amp;s_Buffer[s_Index]); br / nbsp; nbsp;do br / nbsp; nbsp;{ br / nbsp; nbsp; s_RouteName = (char *)0; br / nbsp; nbsp; if(s_Buffer[s_Index] == '\0' || s_Buffer[s_Index] == '\n') br / nbsp; nbsp; { br / nbsp; nbsp; nbsp;s_Buffer[s_Index] = '\0'; br / nbsp; nbsp; nbsp;s_RouteName = s_TraceBuffer; br / nbsp; nbsp; nbsp;while((*s_TraceBuffer) != ' ' amp;amp; (*s_TraceBuffer) != '\t' amp;amp; (*s_TraceBuffer) != '\0')s_TraceBuffer++; br / nbsp; nbsp; nbsp;*(s_TraceBuffer++) = '\0'; br / nbsp; nbsp; nbsp;while(((*s_TraceBuffer) == ' ' || (*s_TraceBuffer) == '\t') amp;amp; (*s_TraceBuffer) != '\0')s_TraceBuffer++; br /nbsp; nbsp; nbsp;if(sscanf(s_TraceBuffer, %lx%lx%lX%lu%lu%lu%lx, amp;s_Destination, amp;s_Gateway, amp;s_Flags, amp;s_RefCnt, amp;s_Use, amp;s_Metric, amp;s_Mask) == 7)nbsp; nbsp; br / nbsp; nbsp; nbsp;{ br / nbsp; nbsp; nbsp; if(s_Destination == 0lu) br / nbsp; nbsp; nbsp; { br / nbsp; nbsp; nbsp; nbsp;/* fprintf(stdout, Default route [%s:%s]\n, s_RouteName, s_TraceBuffer); */ br / nbsp; nbsp; nbsp; nbsp;break; br / nbsp; nbsp; nbsp; } br / nbsp; nbsp; nbsp; /* else fprintf(stdout, Normal route [%s:%s]\n, s_RouteName, s_TraceBuffer); */ br / nbsp; nbsp; nbsp;} br / nbsp; nbsp; nbsp;/* else fprintf(stdout, Non line [%s:%s]\n, s_RouteName, s_TraceBuffer);nbsp; */ br / nbsp; nbsp; nbsp;s_Index++; br / nbsp; nbsp; nbsp;s_TraceBuffer = (char *)(amp;s_Buffer[s_Index]); br / nbsp; nbsp; } br / nbsp; nbsp; else if(s_Buffer[s_Index] == '\r')s_Buffer[s_Index++] = ' '; br / nbsp; nbsp; else s_Index++; br / nbsp; nbsp;}while(s_Index lt; s_ReadBytes); br / nbsp; } br / } br / else fprintf(stderr, Can not open \%s\\n, c_Proc_Route); br / br / if(s_RouteName == (char *)0) br / { br / nbsp; return(-1); br / } br / br / s_SocketHandle = socket(AF_INET, SOCK_DGRAM, 0); br / if(s_SocketHandle gt;= 0) br / { br / nbsp; memset((void *)amp;s_ifconfig, 0, sizeof(struct ifconf)); br / nbsp; do br / nbsp; { br / nbsp; nbsp;if(s_ifconfig.ifc_buf)free(s_ifconfig.ifc_buf); br / nbsp; nbsp;s_ifconfig.ifc_len = sizeof(struct ifreq) * s_RequestCount; br / nbsp; nbsp;s_ifconfig.ifc_buf = malloc(s_ifconfig.ifc_len); br / nbsp; nbsp;if(s_ifconfig.ifc_buf) br / nbsp; nbsp;{ br / nbsp; nbsp; if(ioctl(s_SocketHandle, SIOCGIFCONF, amp;s_ifconfig) == 0) br / nbsp; nbsp; { br / nbsp; nbsp; nbsp;if(s_ifconfig.ifc_len lt; (sizeof(struct ifreq) * s_RequestCount)) br / nbsp; nbsp; nbsp;{ br / nbsp; nbsp; nbsp; s_ifrequest = s_ifconfig.ifc_req; br / nbsp; nbsp; nbsp; if(s_ifrequest) br / nbsp; nbsp; nbsp; { br / nbsp; nbsp; nbsp; nbsp;for(s_RequestCount = 0;s_RequestCount lt; s_ifconfig.ifc_len;s_RequestCount += sizeof(struct ifreq), s_ifrequest++) br / nbsp; nbsp; nbsp; nbsp;{ br / nbsp; nbsp;s_MyDevice = strdup(s_ifrequest-gt;ifr_name); br / nbsp; nbsp; br / nbsp; nbsp;ioctl(s_SocketHandle, SIOCGIFADDR, s_ifrequest);nbsp; nbsp; nbsp; nbsp; br / nbsp; nbsp;s_SockAddr_Innbsp; nbsp; nbsp; nbsp;= (struct sockaddr_in *)(amp;s_ifrequest-gt;ifr_addr); br / nbsp; nbsp; nbsp; nbsp; s_MyIPnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; = strdup(inet_ntoa(s_SockAddr_In-gt;sin_addr));nbsp; nbsp; br / nbsp; nbsp;ioctl(s_SocketHandle, SIOCGIFBRDADDR, s_ifrequest);nbsp; nbsp; nbsp; nbsp; br / nbsp; nbsp;s_SockAddr_Innbsp; nbsp; nbsp; nbsp;= (struct sockaddr_in *)amp;s_ifrequest-gt;ifr_broadaddr; br / nbsp; nbsp; nbsp; nbsp; s_MyBroadcastIPnbsp; nbsp; nbsp;= strdup(inet_ntoa(s_SockAddr_In-gt;sin_addr));nbsp; nbsp; br / nbsp; nbsp;ioctl(s_SocketHandle, SIOCGIFNETMASK, s_ifrequest);nbsp; nbsp; nbsp; nbsp; br / nbsp; nbsp;s_SockAddr_Innbsp; nbsp; nbsp; nbsp;= (struct sockaddr_in *)amp;s_ifrequest-gt;ifr_netmask; br / nbsp; nbsp; nbsp; nbsp; s_MyNetmaskIPnbsp; nbsp; nbsp; nbsp;= strdup(inet_ntoa(s_SockAddr_In-gt;sin_addr));nbsp; nbsp; br / nbsp; nbsp; br / nbsp; nbsp;if(strcmp(s_MyDevice, lo) != 0 amp;amp; strcmp(s_RouteName, s_MyDevice) == 0)fprintf(stdout, %s %s\n, s_MyDevice, s_MyIP); br / nbsp; nbsp; br / nbsp; nbsp;if(s_MyDevicenbsp; nbsp; nbsp;)free(s_MyDevice); br / nbsp; nbsp;if(s_MyIPnbsp; nbsp; nbsp; nbsp; nbsp;)free(s_MyIP); br / nbsp; nbsp;if(s_MyBroadcastIP)free(s_MyBroadcastIP); br / nbsp; nbsp;if(s_MyNetmaskIPnbsp; )free(s_MyNetmaskIP); br / nbsp; nbsp; nbsp; nbsp;} br / nbsp; nbsp; nbsp; } br / nbsp; nbsp; nbsp; break; br / nbsp; nbsp; nbsp;} br / nbsp; nbsp; nbsp;else s_RequestCount += 10; br / nbsp; nbsp; } br / nbsp; nbsp; else break; br / nbsp; nbsp;} br / nbsp; nbsp;else break; br / nbsp; }while(1);nbsp; br / nbsp; if(s_ifconfig.ifc_buf)free(s_ifconfig.ifc_buf); br / nbsp; close(s_SocketHandle);nbsp; nbsp;nbsp; br / } br / else fprintf(stderr, Can not open socket !!!\n); br / return(0); br / } br / br / /* End of source */ /td/tr/tbody/table
크리에이티브 커먼즈 라이센스
Creative Commons License

태그 : , , , ,
트랙백0 | 댓글0
이 글의 관련글(트랙백) 주소 :: http://blog.minzkn.com/trackback/272

이름 :
비밀번호 :
홈페이지 :
  비밀글로 등록
내용 :
 



[PREV] [1] ... [300][301][302][303][304][305][306][307][308] ... [421] [NEXT]
위치로그 : 태그 : 방명록 : 관리자 : rss
장인정신’s Blog is powered by Tattertools.com / Designed by Lefttoe.Net
네. 이제 결혼했습니다.
  06/27 - 장인정신
네. 거기 맞아요. 그때 만나...
  06/27 - 장인정신
결혼하시나봐요~ 축하드립니다~
  06/25 - MasterQ
저희집 바로 옆으로 지나가셨...
  06/25 - MasterQ
아우~ 정말 소중한 자료 감사...
  03/09 - 착한청년
신기전
Savvy의 블로그
network+is+unreachable-으로...
blogring.org
서버의 Local IP 가져오기, 단상
엘레노아의 작업로그

Creative Commons License

이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.