- 网络连接
调试此题
- 2023-7-15 10:40:49 @
#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
const int N = 1005;
int n;
struct Server
{
int id;
string name;
};
Server servers[N];
int serversCnt;
//map<string, int> server;
bool isValid(string addr)
{
//...
int n1=0, n2=0;
for(int i = 0; i < addr.size(); i++)
{
if(addr[i] == '.') n1++;
if(addr[i] == ':') n2++;
}
if(n1 != 3 || n2 != 1) return 0;
if(addr[0] == '0' && addr[1] != '.') return 0;
for(int i = 0; i < addr.size(); i++)
{
if(addr[i] == '.' || addr[i] == ':')
{
if(i + 1 == addr.size() - 1) return 0; // 192.179.0.1:
if( i + 2 < addr.size() && addr[i + 1] == '0' && isdigit(addr[i + 2]) )
return 0;
}
}
int a, b, c,d, e;
int res = sscanf(addr.c_str(),"%d.%d.%d.%d:%d", &a,&b, &c, &d, &e);
if(res != 5) return 0;
if(a < 0 || a > 255) return 0;
if(b < 0 || b > 255) return 0;
if(c < 0 || c > 255) return 0;
if(d < 0 || d > 255) return 0;
if(e < 0 || e > 65535) return 0;
return 1;
}
int isOK(string addr)
{
if(isValid(addr))
{
for(int i = 1; i <= serversCnt; i++)
{
if(addr == servers[i].name)
{
return 2;
}
}
return 1;
}
return 3;
}
void handleServer(string addr,int id)
{
int res = isOK(addr);
if(res == 1)
{
servers[++serversCnt].id = id;
servers[serversCnt].name = addr;
cout << "OK" << endl;
}
else if(res == 2)
{
cout << "FAIL" << endl;
}
else{
cout << "ERR" << endl;
}
}
void handleClient(string addr)
{
if(isValid(addr))
{
for(int i = 1; i <= serversCnt; i++)
{
if(servers[i].name == addr)
{
cout << servers[i].id << endl;
return;
}
}
cout << "FAIL" << endl;
}
else cout << "ERR" << endl;
}
void handle(string op, string addr,int id)
{
if(op == "Server")
{
handleServer(addr,id);
}
else
handleClient(addr);
}
void initInput()
{
cin >> n;
for(int i = 1; i <= n; i++)
{
string op, addr;
cin >> op >> addr;
handle(op, addr,i);
}
}
int main(void)
{
// initInput();
if(isValid("134.123.3.3:3") == 0)
{
cout << "err" << endl;
}
else{
cout << "OK" << endl;
}
return 0;
}
0 条评论
目前还没有评论...
信息
- ID
- 651
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 137
- 已通过
- 27
- 上传者