|
|
@@ -1,9 +1,15 @@ |
|
|
|
#include "common.h" |
|
|
|
|
|
|
|
#include "common.h" |
|
|
|
|
|
|
|
/********************************************************************************************* |
|
|
|
* 功能    : 检测socket版本 |
|
|
|
* �述   : 检测socket版本是�一致 |
|
|
|
* 输入 : æ— |
|
|
|
* 输出 : true socket版本一致 |
|
|
|
* false socket版本�一致 |
|
|
|
*********************************************************************************************/ |
|
|
|
bool InitSocket_Version(void) |
|
|
|
{ |
|
|
|
WORD sockVersion = MAKEWORD(2, 2);//ʹÓÃwinsocket2.2°æ±¾ |
|
|
|
WORD sockVersion = MAKEWORD(2, 2);//使用winsocket2.2版本 |
|
|
|
WSADATA wsaData; |
|
|
|
if (WSAStartup(sockVersion, &wsaData) != 0) |
|
|
|
{ |
|
|
@@ -12,41 +18,63 @@ bool InitSocket_Version(void) |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
bool Check_IP(char* IP) |
|
|
|
/********************************************************************************************* |
|
|
|
* 功能    : IP地�有效性检测 |
|
|
|
* �述   : 检测输入的IP地�是��法 |
|
|
|
* 输入 : IP 输入的IP地� |
|
|
|
* 输出 : true IP地��法 |
|
|
|
* false IP地��法 |
|
|
|
*********************************************************************************************/ |
|
|
|
bool Check_IP(string IP) |
|
|
|
{ |
|
|
|
int s[4]; |
|
|
|
string ip = IP; |
|
|
|
if (ip.length() < 7 || ip.length() > 15) //³¤¶ÈÅж¨ |
|
|
|
if (ip.length() < 7 || ip.length() > 15) //长度判定 |
|
|
|
return false; |
|
|
|
if (sscanf_s(IP, "%d.%d.%d.%d", &s[0], &s[1], &s[2], &s[3]) != 4) //IPV4¸ñʽÕýÈ· |
|
|
|
if (sscanf_s(IP.c_str(), "%d.%d.%d.%d", &s[0], &s[1], &s[2], &s[3]) != 4) //IPV4æ ¼å¼�æ£ç¡® |
|
|
|
{ |
|
|
|
return false; |
|
|
|
} |
|
|
|
string newip = to_string(s[0]) + "." + to_string(s[1]) + "." + to_string(s[2]) + "." + to_string(s[3]); |
|
|
|
if (ip != newip) //ǰµ¼0 |
|
|
|
if (ip != newip) //�导0 |
|
|
|
return false; |
|
|
|
if ((s[0] & 0xffffff00) || (s[1] & 0xffffff00) || (s[2] & 0xffffff00) || (s[3] & 0xffffff00)) //ÅжÏÿһ¶Î´óСÊÇ·ñ·ûºÏÒªÇó |
|
|
|
if ((s[0] & 0xffffff00) || (s[1] & 0xffffff00) || (s[2] & 0xffffff00) || (s[3] & 0xffffff00)) //åˆ¤æ–æ¯�一段大å°�是å�¦ç¬¦å�ˆè¦�求 |
|
|
|
{ |
|
|
|
return false; |
|
|
|
} |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
void Input_IP(vector <string>& a) |
|
|
|
/********************************************************************************************* |
|
|
|
* 功能    : 获�从站IP地�和端�� |
|
|
|
* �述   : 终端输入从站IP地�和端�� |
|
|
|
* 输入 : IP 地� (IPV4) |
|
|
|
* *Port_number 端��(1-65535) |
|
|
|
* 输出 : æ— |
|
|
|
*********************************************************************************************/ |
|
|
|
void Input_IP(string& IP, unsigned int *Port_number) |
|
|
|
{ |
|
|
|
cout << "ÇëÊäÈë´ÓÕ¾IP£º" << endl; |
|
|
|
char IP[100]; |
|
|
|
while (cin >> IP) // ctrl + Z + Enter ½áÊøÊäÈë |
|
|
|
int i = 1; |
|
|
|
do |
|
|
|
{ |
|
|
|
if (Check_IP(IP)) |
|
|
|
{ |
|
|
|
a.push_back(IP); |
|
|
|
memset(IP, 0, 100); |
|
|
|
} |
|
|
|
else |
|
|
|
if (i == 1) |
|
|
|
{ |
|
|
|
cout << "ÊäÈëIP¸ñʽ´íÎó£¬ÇëÖØÐÂÊäÈë" << endl; |
|
|
|
memset(IP, 0, 100); |
|
|
|
cout << "请输入从站IP:"; |
|
|
|
i = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
cout << "IP地å�€æ ¼å¼�ä¸�æ£ç¡®ï¼Œè¯·é‡�新输入从站IP:"; |
|
|
|
cin >> IP; |
|
|
|
} while (!Check_IP(IP)); |
|
|
|
|
|
|
|
i = 1; |
|
|
|
cout << "IP地å�€è¾“æ ¼å¼�å…¥æ£ç¡®ï¼Œè¯·è¾“入从站端å�£å�·ï¼š"; |
|
|
|
do |
|
|
|
{ |
|
|
|
if (i != 1) |
|
|
|
cout << "请�新输入从站端��:"; |
|
|
|
cin >> *Port_number; |
|
|
|
i = 0; |
|
|
|
} while (*Port_number == 0 || *Port_number > 65535); //端��能为0 ,端��范围0---65535 |
|
|
|
|
|
|
|
} |