{"id":100,"date":"2014-07-17T10:28:35","date_gmt":"2014-07-17T10:28:35","guid":{"rendered":""},"modified":"2014-07-17T10:28:35","modified_gmt":"2014-07-17T10:28:35","slug":"","status":"publish","type":"post","link":"http:\/\/weizn.net\/?p=100","title":{"rendered":"Port Scanner"},"content":{"rendered":"<p>\n\t<a target=\"_blank\" href=\"http:\/\/www.weizn.net\/content\/uploadfile\/201407\/f3cc1405589858.jpg\" data-rel=\"penci-gallery-image-content\"  id=\"ematt:197\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.weizn.net\/content\/uploadfile\/201407\/f3cc1405589858.jpg\" title=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" alt=\"1.jpg\" border=\"0\" width=\"669\" height=\"438\" \/><\/a>\n<\/p>\n<p>\n\t<a target=\"_blank\" href=\"http:\/\/www.weizn.net\/content\/uploadfile\/201407\/15601405589859.jpg\" data-rel=\"penci-gallery-image-content\"  id=\"ematt:199\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.weizn.net\/content\/uploadfile\/201407\/15601405589859.jpg\" title=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" alt=\"2.jpg\" border=\"0\" width=\"669\" height=\"438\" \/><\/a>\n<\/p>\n<p>\n\t<a target=\"_blank\" href=\"http:\/\/www.weizn.net\/content\/uploadfile\/201407\/799b1405589861.jpg\" data-rel=\"penci-gallery-image-content\"  id=\"ematt:201\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.weizn.net\/content\/uploadfile\/201407\/799b1405589861.jpg\" title=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" alt=\"3.jpg\" border=\"0\" width=\"669\" height=\"438\" \/><\/a>\n<\/p>\n<p>\n\t\n<\/p>\n<p>\n\t\n<\/p>\n<p>\n\t\n<\/p>\n<p>#include &lt;stdio.h&gt;<br \/>\n#include &lt;stdlib.h&gt;<br \/>\n#include &lt;string.h&gt;<br \/>\n#include &lt;winsock2.h&gt;<br \/>\n#include &lt;conio.h&gt;<br \/>\n#include &lt;time.h&gt;<\/p>\n<p>#pragma comment(lib,&#8221;ws2_32.lib&#8221;)<\/p>\n<p>int Func1_Thread_Count=0,Func2_Thread_Count=0,Func3_Thread_Count=0;<br \/>\nCRITICAL_SECTION CS_FUNC_1,CS_COUNT_1;<br \/>\nCRITICAL_SECTION CS_FUNC_2,CS_COUNT_2;<br \/>\nCRITICAL_SECTION CS_FUNC_3,CS_COUNT_3;<\/p>\n<p>typedef struct<br \/>\n{<br \/>\n&nbsp;&nbsp;&nbsp; char TargetHost[50];<br \/>\n&nbsp;&nbsp;&nbsp; int NowPort;<br \/>\n&nbsp;&nbsp;&nbsp; FILE *file;<br \/>\n} FUNC1_PARA;<\/p>\n<p>typedef struct<br \/>\n{<br \/>\n&nbsp;&nbsp;&nbsp; char TargetHost[50];<br \/>\n&nbsp;&nbsp;&nbsp; int TargetPort;<br \/>\n&nbsp;&nbsp;&nbsp; FILE *file;<br \/>\n} FUNC2_PARA;<\/p>\n<p>typedef struct<br \/>\n{<br \/>\n&nbsp;&nbsp;&nbsp; char TargetHost[50];<br \/>\n&nbsp;&nbsp;&nbsp; int NowPort;<br \/>\n&nbsp;&nbsp;&nbsp; FILE *file;<br \/>\n} FUNC3_PARA;<\/p>\n<p>int func1_print(int open_port,int now_port,FILE *file)<br \/>\n{<br \/>\n&nbsp;&nbsp;&nbsp; printf(&#8221;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \\r&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; if(open_port&gt;0)<br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#8220;Port:%d&nbsp; &#8212;&#8212;-&gt;&nbsp; Open\\n&#8221;,open_port);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fprintf(file,&#8221;Port:%d&nbsp; &#8212;&#8212;-&gt;&nbsp; Open\\n&#8221;,open_port);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fflush(file);<br \/>\n&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp; else if(now_port&gt;0)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#8220;Check Port:%d&nbsp; Thread:%d\\r&#8221;,now_port,Func1_Thread_Count);<\/p>\n<p>&nbsp;&nbsp;&nbsp; return 0;<br \/>\n}<\/p>\n<p>int func2_print(char *target_host,int sign,FILE *file)<br \/>\n{<br \/>\n&nbsp;&nbsp;&nbsp; printf(&#8221;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \\r&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; if(sign)<br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#8220;%s\\n&#8221;,target_host);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fprintf(file,&#8221;%s\\n&#8221;,target_host);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fflush(file);<br \/>\n&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp; else<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#8220;Scan Host:%s&nbsp;&nbsp; Thread:%d\\r&#8221;,target_host,Func2_Thread_Count);<\/p>\n<p>&nbsp;&nbsp;&nbsp; return 0;<br \/>\n}<\/p>\n<p>int func3_print(char *target_host,int open_port,int now_port,FILE *file)<br \/>\n{<br \/>\n&nbsp;&nbsp;&nbsp; static char LastIP[50]= {0};<br \/>\n&nbsp;&nbsp;&nbsp; printf(&#8221;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \\r&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; if(now_port&gt;0)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#8220;Scan Host:%s&nbsp; Check Port:%d&nbsp;&nbsp; Thread:%d\\r&#8221;,target_host,now_port,Func3_Thread_Count);<br \/>\n&nbsp;&nbsp;&nbsp; else<br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(strcmp(LastIP,target_host)!=0)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memset(LastIP,NULL,sizeof(LastIP));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strcat(LastIP,target_host);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#8220;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;\\n&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fprintf(file,&#8221;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;\\n&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#8220;Host:%s&nbsp;&nbsp; Port:%d &#8212;&#8212;-&gt; Open\\n&#8221;,target_host,open_port);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fprintf(file,&#8221;Host:%s&nbsp;&nbsp; Port:%d &#8212;&#8212;-&gt; Open\\n&#8221;,target_host,open_port);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fflush(file);<br \/>\n&nbsp;&nbsp;&nbsp; }<\/p>\n<p>&nbsp;&nbsp;&nbsp; return 0;<br \/>\n}<\/p>\n<p>int check_port(char *target_ip,int target_port)<br \/>\n{<br \/>\n&nbsp;&nbsp;&nbsp; SOCKET soc=INVALID_SOCKET;<br \/>\n&nbsp;&nbsp;&nbsp; struct sockaddr_in addr;<br \/>\n&nbsp;&nbsp;&nbsp; struct timeval timeout;<br \/>\n&nbsp;&nbsp;&nbsp; unsigned long socpara=1;<br \/>\n&nbsp;&nbsp;&nbsp; fd_set fd_write;<\/p>\n<p>&nbsp;&nbsp;&nbsp; memset(&amp;addr,NULL,sizeof(struct sockaddr_in));<br \/>\n&nbsp;&nbsp;&nbsp; memset(&amp;timeout,NULL,sizeof(struct timeval));<\/p>\n<p>&nbsp;&nbsp;&nbsp; addr.sin_family=AF_INET;<br \/>\n&nbsp;&nbsp;&nbsp; addr.sin_addr.s_addr=inet_addr(target_ip);<br \/>\n&nbsp;&nbsp;&nbsp; addr.sin_port=htons(target_port);<br \/>\n&nbsp;&nbsp;&nbsp; timeout.tv_sec=10;<\/p>\n<p>&nbsp;&nbsp;&nbsp; if((soc=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKET)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<\/p>\n<p>&nbsp;&nbsp;&nbsp; ioctlsocket(soc,FIONBIO,&amp;socpara);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/\u8bbe\u7f6e\u4e3a\u975e\u963b\u585e\u6a21\u5f0f<br \/>\n&nbsp;&nbsp;&nbsp; if(connect(soc,(struct sockaddr *)&amp;addr,sizeof(struct sockaddr_in))==0)<br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; closesocket(soc);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br \/>\n&nbsp;&nbsp;&nbsp; }<\/p>\n<p>&nbsp;&nbsp;&nbsp; FD_ZERO(&amp;fd_write);<br \/>\n&nbsp;&nbsp;&nbsp; FD_SET(soc,&amp;fd_write);<br \/>\n&nbsp;&nbsp;&nbsp; if(select(-1,NULL,&amp;fd_write,NULL,&amp;timeout)&gt;0)<br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; closesocket(soc);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br \/>\n&nbsp;&nbsp;&nbsp; }<\/p>\n<p>&nbsp;&nbsp;&nbsp; closesocket(soc);<br \/>\n&nbsp;&nbsp;&nbsp; return -1;<br \/>\n}<\/p>\n<p>DWORD WINAPI func1_thread(LPVOID Parameter)<br \/>\n{<br \/>\n&nbsp;&nbsp;&nbsp; FUNC1_PARA *para=(FUNC1_PARA *)Parameter;<\/p>\n<p>&nbsp;&nbsp;&nbsp; EnterCriticalSection(&amp;CS_COUNT_1);<br \/>\n&nbsp;&nbsp;&nbsp; Func1_Thread_Count++;<br \/>\n&nbsp;&nbsp;&nbsp; LeaveCriticalSection(&amp;CS_COUNT_1);<\/p>\n<p>&nbsp;&nbsp;&nbsp; if(check_port(para-&gt;TargetHost,para-&gt;NowPort)!=0)<br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EnterCriticalSection(&amp;CS_COUNT_1);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Func1_Thread_Count&#8211;;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LeaveCriticalSection(&amp;CS_COUNT_1);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br \/>\n&nbsp;&nbsp;&nbsp; }<\/p>\n<p>&nbsp;&nbsp;&nbsp; EnterCriticalSection(&amp;CS_FUNC_1);<br \/>\n&nbsp;&nbsp;&nbsp; func1_print(para-&gt;NowPort,-1,para-&gt;file);<br \/>\n&nbsp;&nbsp;&nbsp; LeaveCriticalSection(&amp;CS_FUNC_1);<\/p>\n<p>&nbsp;&nbsp;&nbsp; EnterCriticalSection(&amp;CS_COUNT_1);<br \/>\n&nbsp;&nbsp;&nbsp; Func1_Thread_Count&#8211;;<br \/>\n&nbsp;&nbsp;&nbsp; LeaveCriticalSection(&amp;CS_COUNT_1);<\/p>\n<p>&nbsp;&nbsp;&nbsp; free(para);<\/p>\n<p>&nbsp;&nbsp;&nbsp; return 0;<br \/>\n}<\/p>\n<p>int func_1()<br \/>\n{<br \/>\n&nbsp;&nbsp;&nbsp; int StartPort,EndPort;<br \/>\n&nbsp;&nbsp;&nbsp; FUNC1_PARA *para=NULL;<br \/>\n&nbsp;&nbsp;&nbsp; char TargetIP[50];<br \/>\n&nbsp;&nbsp;&nbsp; FILE *file=NULL;<\/p>\n<p>&nbsp;&nbsp;&nbsp; memset(TargetIP,NULL,sizeof(TargetIP));<\/p>\n<p>&nbsp;&nbsp;&nbsp; if((file=fopen(&#8220;results.txt&#8221;,&#8221;wt&#8221;))==NULL)<br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#8220;Create result file failed!\\n&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getch();<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br \/>\n&nbsp;&nbsp;&nbsp; }<\/p>\n<p>&nbsp;&nbsp;&nbsp; printf(&#8220;Target IP:&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; fflush(stdin);<br \/>\n&nbsp;&nbsp;&nbsp; scanf(&#8220;%s&#8221;,TargetIP);<br \/>\n&nbsp;&nbsp;&nbsp; printf(&#8220;Start Port:&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; fflush(stdin);<br \/>\n&nbsp;&nbsp;&nbsp; if(scanf(&#8220;%d&#8221;,&amp;StartPort)!=1)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br \/>\n&nbsp;&nbsp;&nbsp; printf(&#8220;End Port:&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; fflush(stdin);<br \/>\n&nbsp;&nbsp;&nbsp; if(scanf(&#8220;%d&#8221;,&amp;EndPort)!=1)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<\/p>\n<p>&nbsp;&nbsp;&nbsp; puts(&#8220;\\n&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; if(StartPort&lt;1 || StartPort&gt;EndPort || EndPort&gt;65535)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br \/>\n&nbsp;&nbsp;&nbsp; for(; StartPort&lt;=EndPort; StartPort++)<br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((para=(FUNC1_PARA *)malloc(sizeof(FUNC1_PARA)))==NULL)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memset(para,NULL,sizeof(FUNC1_PARA));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; para-&gt;NowPort=StartPort;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strcat(para-&gt;TargetHost,TargetIP);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; para-&gt;file=file;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EnterCriticalSection(&amp;CS_FUNC_1);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; func1_print(-1,StartPort,NULL);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LeaveCriticalSection(&amp;CS_FUNC_1);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CloseHandle(CreateThread(NULL,0,func1_thread,(LPVOID)para,0,NULL));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sleep(10);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; para=NULL;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(Func1_Thread_Count&gt;=1000) Sleep(100);<br \/>\n&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp; EnterCriticalSection(&amp;CS_FUNC_1);<br \/>\n&nbsp;&nbsp;&nbsp; printf(&#8221;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \\r&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; printf(&#8220;Wait for all threads to exit.\\r&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; LeaveCriticalSection(&amp;CS_FUNC_1);<br \/>\n&nbsp;&nbsp;&nbsp; while(Func1_Thread_Count!=0) Sleep(500);<br \/>\n&nbsp;&nbsp;&nbsp; fclose(file);<br \/>\n&nbsp;&nbsp;&nbsp; EnterCriticalSection(&amp;CS_FUNC_1);<br \/>\n&nbsp;&nbsp;&nbsp; printf(&#8221;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \\r&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; puts(&#8220;\\nAll Done!&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; LeaveCriticalSection(&amp;CS_FUNC_1);<\/p>\n<p>&nbsp;&nbsp;&nbsp; return 0;<br \/>\n}<\/p>\n<p>DWORD WINAPI func2_thread(LPVOID Parameter)<br \/>\n{<br \/>\n&nbsp;&nbsp;&nbsp; FUNC2_PARA *para=(FUNC2_PARA *)Parameter;<br \/>\n&nbsp;&nbsp;&nbsp; EnterCriticalSection(&amp;CS_COUNT_2);<br \/>\n&nbsp;&nbsp;&nbsp; Func2_Thread_Count++;<br \/>\n&nbsp;&nbsp;&nbsp; LeaveCriticalSection(&amp;CS_COUNT_2);<\/p>\n<p>&nbsp;&nbsp;&nbsp; if(check_port(para-&gt;TargetHost,para-&gt;TargetPort)==0)<br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EnterCriticalSection(&amp;CS_FUNC_2);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; func2_print(para-&gt;TargetHost,1,para-&gt;file);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LeaveCriticalSection(&amp;CS_FUNC_2);<br \/>\n&nbsp;&nbsp;&nbsp; }<\/p>\n<p>&nbsp;&nbsp;&nbsp; EnterCriticalSection(&amp;CS_COUNT_2);<br \/>\n&nbsp;&nbsp;&nbsp; Func2_Thread_Count&#8211;;<br \/>\n&nbsp;&nbsp;&nbsp; LeaveCriticalSection(&amp;CS_COUNT_2);<\/p>\n<p>&nbsp;&nbsp;&nbsp; free(para);<\/p>\n<p>&nbsp;&nbsp;&nbsp; return 0;<br \/>\n}<\/p>\n<p>int func_2()<br \/>\n{<br \/>\n&nbsp;&nbsp;&nbsp; char StartIP[50],EndIP[50];<br \/>\n&nbsp;&nbsp;&nbsp; char *pStart=NULL,*pEnd=NULL,temp[50];<br \/>\n&nbsp;&nbsp;&nbsp; int TargetPort,region[2][4]= {0},i=0,j=0;<br \/>\n&nbsp;&nbsp;&nbsp; FUNC2_PARA *para=NULL;<br \/>\n&nbsp;&nbsp;&nbsp; FILE *file=NULL;<\/p>\n<p>&nbsp;&nbsp;&nbsp; memset(StartIP,NULL,sizeof(StartIP));<br \/>\n&nbsp;&nbsp;&nbsp; memset(EndIP,NULL,sizeof(EndIP));<\/p>\n<p>&nbsp;&nbsp;&nbsp; if((file=fopen(&#8220;results.txt&#8221;,&#8221;wt&#8221;))==NULL)<br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#8220;Create result file failed!\\n&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getch();<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br \/>\n&nbsp;&nbsp;&nbsp; }<\/p>\n<p>&nbsp;&nbsp;&nbsp; printf(&#8220;Start IP:&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; fflush(stdin);<br \/>\n&nbsp;&nbsp;&nbsp; scanf(&#8220;%s&#8221;,StartIP);<br \/>\n&nbsp;&nbsp;&nbsp; printf(&#8220;End IP:&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; fflush(stdin);<br \/>\n&nbsp;&nbsp;&nbsp; scanf(&#8220;%s&#8221;,EndIP);<br \/>\n&nbsp;&nbsp;&nbsp; printf(&#8220;Port:&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; fflush(stdin);<br \/>\n&nbsp;&nbsp;&nbsp; if(scanf(&#8220;%d&#8221;,&amp;TargetPort)!=1)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<\/p>\n<p>&nbsp;&nbsp;&nbsp; puts(&#8220;\\n&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; strcat(StartIP,&#8221;.&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; strcat(EndIP,&#8221;.&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; for(pStart=StartIP,i=0,j=0; 1; i++)<br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memset(temp,NULL,sizeof(temp));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pEnd=strchr(pStart,&#8217;.&#8217;);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(pEnd==NULL)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#8220;Input is wrong!\\n&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getch();<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memcpy(temp,pStart,pEnd-pStart);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; region[j][i]=atoi(temp);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(i==3)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(j==1) break;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pStart=EndIP;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j++;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i=-1;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pStart=pEnd+1;<br \/>\n&nbsp;&nbsp;&nbsp; }<\/p>\n<p>&nbsp;&nbsp;&nbsp; while(region[1][0]&gt;region[0][0] || region[1][1]&gt;region[0][1] || region[1][2]&gt;region[0][2] || region[1][3]&gt;=region[0][3])<br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; para=(FUNC2_PARA *)malloc(sizeof(FUNC2_PARA));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(para==NULL)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#8220;\\nmalloc() error!\\n&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memset(para,NULL,sizeof(FUNC2_PARA));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sprintf(para-&gt;TargetHost,&#8221;%d.%d.%d.%d&#8221;,region[0][0],region[0][1],region[0][2],region[0][3]);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; para-&gt;TargetPort=TargetPort;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; para-&gt;file=file;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EnterCriticalSection(&amp;CS_FUNC_2);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; func2_print(para-&gt;TargetHost,0,NULL);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LeaveCriticalSection(&amp;CS_FUNC_2);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CloseHandle(CreateThread(NULL,0,func2_thread,(LPVOID)para,0,NULL));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sleep(10);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; region[0][3]++;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(region[0][3]&gt;255)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; region[0][3]=1;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; region[0][2]++;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(region[0][2]&gt;255)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; region[0][2]=0;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; region[0][1]++;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(region[0][1]&gt;255)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; region[0][1]=0;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; region[0][0]++;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(region[0][0]&gt;255) break;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; para=NULL;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(Func2_Thread_Count&gt;=1000) Sleep(500);<br \/>\n&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp; EnterCriticalSection(&amp;CS_FUNC_2);<br \/>\n&nbsp;&nbsp;&nbsp; printf(&#8221;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \\r&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; printf(&#8220;Wait for all threads to exit.\\r&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; LeaveCriticalSection(&amp;CS_FUNC_2);<br \/>\n&nbsp;&nbsp;&nbsp; while(Func2_Thread_Count!=0) Sleep(500);<br \/>\n&nbsp;&nbsp;&nbsp; fclose(file);<br \/>\n&nbsp;&nbsp;&nbsp; EnterCriticalSection(&amp;CS_FUNC_2);<br \/>\n&nbsp;&nbsp;&nbsp; printf(&#8221;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \\r&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; puts(&#8220;\\nAll Done!&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; LeaveCriticalSection(&amp;CS_FUNC_2);<\/p>\n<p>&nbsp;&nbsp;&nbsp; return 0;<br \/>\n}<\/p>\n<p>DWORD WINAPI func3_thread(LPVOID Parameter)<br \/>\n{<br \/>\n&nbsp;&nbsp;&nbsp; FUNC3_PARA *para=(FUNC3_PARA *)Parameter;<\/p>\n<p>&nbsp;&nbsp;&nbsp; EnterCriticalSection(&amp;CS_COUNT_3);<br \/>\n&nbsp;&nbsp;&nbsp; Func3_Thread_Count++;<br \/>\n&nbsp;&nbsp;&nbsp; LeaveCriticalSection(&amp;CS_COUNT_3);<\/p>\n<p>&nbsp;&nbsp;&nbsp; if(check_port(para-&gt;TargetHost,para-&gt;NowPort)!=0)<br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EnterCriticalSection(&amp;CS_COUNT_3);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Func3_Thread_Count&#8211;;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LeaveCriticalSection(&amp;CS_COUNT_3);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br \/>\n&nbsp;&nbsp;&nbsp; }<\/p>\n<p>&nbsp;&nbsp;&nbsp; EnterCriticalSection(&amp;CS_FUNC_3);<br \/>\n&nbsp;&nbsp;&nbsp; func3_print(para-&gt;TargetHost,para-&gt;NowPort,-1,para-&gt;file);<br \/>\n&nbsp;&nbsp;&nbsp; LeaveCriticalSection(&amp;CS_FUNC_3);<\/p>\n<p>&nbsp;&nbsp;&nbsp; EnterCriticalSection(&amp;CS_COUNT_3);<br \/>\n&nbsp;&nbsp;&nbsp; Func3_Thread_Count&#8211;;<br \/>\n&nbsp;&nbsp;&nbsp; LeaveCriticalSection(&amp;CS_COUNT_3);<\/p>\n<p>&nbsp;&nbsp;&nbsp; free(para);<\/p>\n<p>&nbsp;&nbsp;&nbsp; return 0;<br \/>\n}<\/p>\n<p>int func_3()<br \/>\n{<br \/>\n&nbsp;&nbsp;&nbsp; char StartIP[50],EndIP[50],temp[50];<br \/>\n&nbsp;&nbsp;&nbsp; char *pStart=NULL,*pEnd=NULL;<br \/>\n&nbsp;&nbsp;&nbsp; int StartPort,NowPort,EndPort,region[2][4]= {0},i=0,j=0;<br \/>\n&nbsp;&nbsp;&nbsp; FUNC3_PARA *para=NULL;<br \/>\n&nbsp;&nbsp;&nbsp; FILE *file=NULL;<\/p>\n<p>&nbsp;&nbsp;&nbsp; memset(StartIP,NULL,sizeof(StartIP));<br \/>\n&nbsp;&nbsp;&nbsp; memset(EndIP,NULL,sizeof(EndIP));<\/p>\n<p>&nbsp;&nbsp;&nbsp; if((file=fopen(&#8220;results.txt&#8221;,&#8221;wt&#8221;))==NULL)<br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#8220;Create result file failed!\\n&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getch();<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br \/>\n&nbsp;&nbsp;&nbsp; }<\/p>\n<p>&nbsp;&nbsp;&nbsp; printf(&#8220;Start IP:&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; fflush(stdin);<br \/>\n&nbsp;&nbsp;&nbsp; scanf(&#8220;%s&#8221;,StartIP);<br \/>\n&nbsp;&nbsp;&nbsp; printf(&#8220;End IP:&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; fflush(stdin);<br \/>\n&nbsp;&nbsp;&nbsp; scanf(&#8220;%s&#8221;,EndIP);<br \/>\n&nbsp;&nbsp;&nbsp; printf(&#8220;Start Port:&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; fflush(stdin);<br \/>\n&nbsp;&nbsp;&nbsp; if(scanf(&#8220;%d&#8221;,&amp;StartPort)!=1) return -1;<br \/>\n&nbsp;&nbsp;&nbsp; printf(&#8220;End Port:&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; fflush(stdin);<br \/>\n&nbsp;&nbsp;&nbsp; if(scanf(&#8220;%d&#8221;,&amp;EndPort)!=1) return -1;<br \/>\n&nbsp;&nbsp;&nbsp; if(StartPort&lt;1 || StartPort&gt;EndPort || EndPort&gt;65535)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<\/p>\n<p>&nbsp;&nbsp;&nbsp; puts(&#8220;&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; strcat(StartIP,&#8221;.&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; strcat(EndIP,&#8221;.&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; for(pStart=StartIP,i=0,j=0; 1; i++)<br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memset(temp,NULL,sizeof(temp));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pEnd=strchr(pStart,&#8217;.&#8217;);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(pEnd==NULL)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#8220;Input is wrong!\\n&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getch();<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memcpy(temp,pStart,pEnd-pStart);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; region[j][i]=atoi(temp);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(i==3)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(j==1) break;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pStart=EndIP;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j++;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i=-1;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pStart=pEnd+1;<br \/>\n&nbsp;&nbsp;&nbsp; }<\/p>\n<p>&nbsp;&nbsp;&nbsp; while(region[1][0]&gt;region[0][0] || region[1][1]&gt;region[0][1] || region[1][2]&gt;region[0][2] || region[1][3]&gt;=region[0][3])<br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(NowPort=StartPort; NowPort&lt;=EndPort; NowPort++)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; para=(FUNC3_PARA *)malloc(sizeof(FUNC3_PARA));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(para==NULL)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#8220;\\nmalloc() error!\\n&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memset(para,NULL,sizeof(FUNC3_PARA));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sprintf(para-&gt;TargetHost,&#8221;%d.%d.%d.%d&#8221;,region[0][0],region[0][1],region[0][2],region[0][3]);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; para-&gt;NowPort=NowPort;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; para-&gt;file=file;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EnterCriticalSection(&amp;CS_FUNC_3);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; func3_print(para-&gt;TargetHost,-1,para-&gt;NowPort,NULL);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LeaveCriticalSection(&amp;CS_FUNC_3);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CloseHandle(CreateThread(NULL,0,func3_thread,(LPVOID)para,0,NULL));<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sleep(10);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; para=NULL;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(Func3_Thread_Count&gt;=1000) Sleep(100);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(Func3_Thread_Count&gt;0) Sleep(500);<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; region[0][3]++;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(region[0][3]&gt;255)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; region[0][3]=1;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; region[0][2]++;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(region[0][2]&gt;255)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; region[0][2]=0;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; region[0][1]++;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(region[0][1]&gt;255)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; region[0][1]=0;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; region[0][0]++;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(region[0][0]&gt;255) break;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp; EnterCriticalSection(&amp;CS_FUNC_3);<br \/>\n&nbsp;&nbsp;&nbsp; printf(&#8221;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \\r&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; printf(&#8220;Wait for all threads to exit.\\r&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; LeaveCriticalSection(&amp;CS_FUNC_3);<br \/>\n&nbsp;&nbsp;&nbsp; while(Func3_Thread_Count!=0) Sleep(500);<br \/>\n&nbsp;&nbsp;&nbsp; fclose(file);<br \/>\n&nbsp;&nbsp;&nbsp; EnterCriticalSection(&amp;CS_FUNC_3);<br \/>\n&nbsp;&nbsp;&nbsp; printf(&#8221;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \\r&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; puts(&#8220;\\nAll Done!&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; LeaveCriticalSection(&amp;CS_FUNC_3);<\/p>\n<p>&nbsp;&nbsp;&nbsp; return 0;<br \/>\n}<\/p>\n<p>int main(int argc,char *argv[])<br \/>\n{<br \/>\n&nbsp;&nbsp;&nbsp; char choose;<br \/>\n&nbsp;&nbsp;&nbsp; WSADATA wsa;<\/p>\n<p>&nbsp;&nbsp;&nbsp; memset(&amp;wsa,NULL,sizeof(WSADATA));<\/p>\n<p>&nbsp;&nbsp;&nbsp; InitializeCriticalSection(&amp;CS_FUNC_1);<br \/>\n&nbsp;&nbsp;&nbsp; InitializeCriticalSection(&amp;CS_COUNT_1);<br \/>\n&nbsp;&nbsp;&nbsp; InitializeCriticalSection(&amp;CS_FUNC_2);<br \/>\n&nbsp;&nbsp;&nbsp; InitializeCriticalSection(&amp;CS_COUNT_2);<br \/>\n&nbsp;&nbsp;&nbsp; InitializeCriticalSection(&amp;CS_FUNC_3);<br \/>\n&nbsp;&nbsp;&nbsp; InitializeCriticalSection(&amp;CS_COUNT_3);<\/p>\n<p>&nbsp;&nbsp;&nbsp; system(&#8220;color a&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; SetConsoleTitle(&#8220;Port Scanner&nbsp; &#8211;By:Wayne&#8221;);<\/p>\n<p>&nbsp;&nbsp;&nbsp; if(WSAStartup(MAKEWORD(2,2),&amp;wsa)!=0)<br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#8220;WSAStartup() error!\\n&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getch();<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br \/>\n&nbsp;&nbsp;&nbsp; }<\/p>\n<p>again:<br \/>\n&nbsp;&nbsp;&nbsp; system(&#8220;cls&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; printf(&#8220;Please select an option:\\n1.You can scan all ports on the target host.\\n&#8221;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;2.You can scan a port of some hosts.\\n3.You can scan all ports of some hosts.\\n&#8221;);<\/p>\n<p>&nbsp;&nbsp;&nbsp; do<br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fflush(stdin);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; choose=getch();<br \/>\n&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp; while(choose&lt;&#8216;1&#8242; || choose&gt;&#8217;3&#8217;);<br \/>\n&nbsp;&nbsp;&nbsp; system(&#8220;cls&#8221;);<br \/>\n&nbsp;&nbsp;&nbsp; switch(choose)<br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp; case &#8216;1&#8217;:<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; func_1();<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br \/>\n&nbsp;&nbsp;&nbsp; case &#8216;2&#8217;:<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; func_2();<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br \/>\n&nbsp;&nbsp;&nbsp; case &#8216;3&#8217;:<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; func_3();<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br \/>\n&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp; getch();<br \/>\n&nbsp;&nbsp;&nbsp; goto again;<\/p>\n<p>&nbsp;&nbsp;&nbsp; return 0;<br \/>\n}<\/p>\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\n\t<a target=\"_blank\" href=\"http:\/\/www.weizn.net\/content\/uploadfile\/201407\/f3cc1405589858.jpg\" id=\"ematt:197\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.weizn.net\/content\/uploadfile\/201407\/f3cc1405589858.jpg\" title=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" alt=\"1.jpg\" border=\"0\" width=\"669\" height=\"438\" \/><\/a>\n<\/p>\n<p>\n\t<a target=\"_blank\" href=\"http:\/\/www.weizn.net\/content\/uploadfile\/201407\/15601405589859.jpg\" id=\"ematt:199\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.weizn.net\/content\/uploadfile\/201407\/15601405589859.jpg\" title=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" alt=\"2.jpg\" border=\"0\" width=\"669\" height=\"438\" \/><\/a>\n<\/p>\n<p>\n\t<a target=\"_blank\" href=\"http:\/\/www.weizn.net\/content\/uploadfile\/201407\/799b1405589861.jpg\" id=\"ematt:201\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.weizn.net\/content\/uploadfile\/201407\/799b1405589861.jpg\" title=\"\u70b9\u51fb\u67e5\u770b\u539f\u56fe\" alt=\"3.jpg\" border=\"0\" width=\"669\" height=\"438\" \/><\/a>\n<\/p>\n<p>\n\t\n<\/p>\n<p>\n\t\n<\/p>\n<p>\n\t\n<\/p>\n<p>\n\t#include &lt;stdio.h&gt;\n<\/p>\n<p>#include &lt;stdlib.h&gt;<br \/>\n#include &lt;string.h&gt;<br \/>\n#include &lt;winsock2.h&gt;<br \/>\n#include &lt;conio.h&gt;<br \/>\n#include &lt;time.h&gt;<\/p>\n<p>#pragma comment(lib,&#8221;ws2_32.lib&#8221;)<\/p>\n<p>int Fun&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[324],"tags":[],"class_list":["post-100","post","type-post","status-publish","format-standard","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Port Scanner - Wayne&#039;s Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/weizn.net\/?p=100\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Port Scanner - Wayne&#039;s Blog\" \/>\n<meta property=\"og:description\" content=\"#include &lt;stdio.h&gt;  #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;winsock2.h&gt; #include &lt;conio.h&gt; #include &lt;time.h&gt;  #pragma comment(lib,&quot;ws2_32.lib&quot;)  int Fun...\" \/>\n<meta property=\"og:url\" content=\"http:\/\/weizn.net\/?p=100\" \/>\n<meta property=\"og:site_name\" content=\"Wayne&#039;s Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-07-17T10:28:35+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.weizn.net\/content\/uploadfile\/201407\/f3cc1405589858.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"zinan\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"22 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/weizn.net\/#website\",\"url\":\"http:\/\/weizn.net\/\",\"name\":\"Wayne&#039;s Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"http:\/\/weizn.net\/#\/schema\/person\/e88bc12c590502d8b6249326f960b264\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/weizn.net\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/weizn.net\/?p=100#primaryimage\",\"inLanguage\":\"zh-Hans\",\"url\":\"http:\/\/www.weizn.net\/content\/uploadfile\/201407\/f3cc1405589858.jpg\",\"contentUrl\":\"http:\/\/www.weizn.net\/content\/uploadfile\/201407\/f3cc1405589858.jpg\"},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/weizn.net\/?p=100#webpage\",\"url\":\"http:\/\/weizn.net\/?p=100\",\"name\":\"Port Scanner - Wayne&#039;s Blog\",\"isPartOf\":{\"@id\":\"http:\/\/weizn.net\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/weizn.net\/?p=100#primaryimage\"},\"datePublished\":\"2014-07-17T10:28:35+00:00\",\"dateModified\":\"2014-07-17T10:28:35+00:00\",\"breadcrumb\":{\"@id\":\"http:\/\/weizn.net\/?p=100#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/weizn.net\/?p=100\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/weizn.net\/?p=100#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\\u9996\\u9875\",\"item\":\"http:\/\/weizn.net\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Port Scanner\"}]},{\"@type\":\"Article\",\"@id\":\"http:\/\/weizn.net\/?p=100#article\",\"isPartOf\":{\"@id\":\"http:\/\/weizn.net\/?p=100#webpage\"},\"author\":{\"@id\":\"http:\/\/weizn.net\/#\/schema\/person\/e88bc12c590502d8b6249326f960b264\"},\"headline\":\"Port Scanner\",\"datePublished\":\"2014-07-17T10:28:35+00:00\",\"dateModified\":\"2014-07-17T10:28:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/weizn.net\/?p=100#webpage\"},\"wordCount\":4424,\"commentCount\":1,\"publisher\":{\"@id\":\"http:\/\/weizn.net\/#\/schema\/person\/e88bc12c590502d8b6249326f960b264\"},\"image\":{\"@id\":\"http:\/\/weizn.net\/?p=100#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.weizn.net\/content\/uploadfile\/201407\/f3cc1405589858.jpg\",\"articleSection\":[\"C\/C++\"],\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/weizn.net\/?p=100#respond\"]}]},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/weizn.net\/#\/schema\/person\/e88bc12c590502d8b6249326f960b264\",\"name\":\"zinan\",\"logo\":{\"@id\":\"http:\/\/weizn.net\/#personlogo\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Port Scanner - Wayne&#039;s Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/weizn.net\/?p=100","og_locale":"zh_CN","og_type":"article","og_title":"Port Scanner - Wayne&#039;s Blog","og_description":"#include &lt;stdio.h&gt;  #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;winsock2.h&gt; #include &lt;conio.h&gt; #include &lt;time.h&gt;  #pragma comment(lib,\"ws2_32.lib\")  int Fun...","og_url":"http:\/\/weizn.net\/?p=100","og_site_name":"Wayne&#039;s Blog","article_published_time":"2014-07-17T10:28:35+00:00","og_image":[{"url":"http:\/\/www.weizn.net\/content\/uploadfile\/201407\/f3cc1405589858.jpg"}],"twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"zinan","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"22 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"http:\/\/weizn.net\/#website","url":"http:\/\/weizn.net\/","name":"Wayne&#039;s Blog","description":"","publisher":{"@id":"http:\/\/weizn.net\/#\/schema\/person\/e88bc12c590502d8b6249326f960b264"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/weizn.net\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"ImageObject","@id":"http:\/\/weizn.net\/?p=100#primaryimage","inLanguage":"zh-Hans","url":"http:\/\/www.weizn.net\/content\/uploadfile\/201407\/f3cc1405589858.jpg","contentUrl":"http:\/\/www.weizn.net\/content\/uploadfile\/201407\/f3cc1405589858.jpg"},{"@type":"WebPage","@id":"http:\/\/weizn.net\/?p=100#webpage","url":"http:\/\/weizn.net\/?p=100","name":"Port Scanner - Wayne&#039;s Blog","isPartOf":{"@id":"http:\/\/weizn.net\/#website"},"primaryImageOfPage":{"@id":"http:\/\/weizn.net\/?p=100#primaryimage"},"datePublished":"2014-07-17T10:28:35+00:00","dateModified":"2014-07-17T10:28:35+00:00","breadcrumb":{"@id":"http:\/\/weizn.net\/?p=100#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["http:\/\/weizn.net\/?p=100"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/weizn.net\/?p=100#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"http:\/\/weizn.net\/"},{"@type":"ListItem","position":2,"name":"Port Scanner"}]},{"@type":"Article","@id":"http:\/\/weizn.net\/?p=100#article","isPartOf":{"@id":"http:\/\/weizn.net\/?p=100#webpage"},"author":{"@id":"http:\/\/weizn.net\/#\/schema\/person\/e88bc12c590502d8b6249326f960b264"},"headline":"Port Scanner","datePublished":"2014-07-17T10:28:35+00:00","dateModified":"2014-07-17T10:28:35+00:00","mainEntityOfPage":{"@id":"http:\/\/weizn.net\/?p=100#webpage"},"wordCount":4424,"commentCount":1,"publisher":{"@id":"http:\/\/weizn.net\/#\/schema\/person\/e88bc12c590502d8b6249326f960b264"},"image":{"@id":"http:\/\/weizn.net\/?p=100#primaryimage"},"thumbnailUrl":"http:\/\/www.weizn.net\/content\/uploadfile\/201407\/f3cc1405589858.jpg","articleSection":["C\/C++"],"inLanguage":"zh-Hans","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/weizn.net\/?p=100#respond"]}]},{"@type":["Person","Organization"],"@id":"http:\/\/weizn.net\/#\/schema\/person\/e88bc12c590502d8b6249326f960b264","name":"zinan","logo":{"@id":"http:\/\/weizn.net\/#personlogo"}}]}},"_links":{"self":[{"href":"http:\/\/weizn.net\/index.php?rest_route=\/wp\/v2\/posts\/100","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/weizn.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/weizn.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/weizn.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/weizn.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=100"}],"version-history":[{"count":0,"href":"http:\/\/weizn.net\/index.php?rest_route=\/wp\/v2\/posts\/100\/revisions"}],"wp:attachment":[{"href":"http:\/\/weizn.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=100"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/weizn.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=100"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/weizn.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=100"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}