获取主机服务对应的端口和端口对应的服务_GetServerInfo
2014-05-08 16:25
363 查看
d
#include <WinSock2.h> #include <iostream> #pragma comment(lib,"ws2_32.lib") using namespace std; int handle_error() { WSACleanup(); return EXIT_FAILURE; } void server_info_show(PSERVENT server_info) { if (server_info == NULL) { cerr << "server_info:NULL,error:" << WSAGetLastError() << endl; return; } cout << "official server name:" << server_info->s_name<<endl; if (*server_info->s_aliases) { cout << "aliases list:" << endl; for (char** list = server_info->s_aliases; *list != NULL; list++) { cout << "\t" << *list << endl; } } cout << "port:" << ntohs(server_info->s_port)<< endl; cout << "proto:" << server_info->s_proto<<endl; } int main(int __argc, char** __argv) { WSADATA wsa; if (0 != WSAStartup(MAKEWORD(2,2), &wsa) ) { cerr << "WSAStartup() failed!" << endl; return handle_error(); } //server get port from server name char* server_name[] = {"telnet","domain","http", "ftp"}; unsigned int server_name_count = sizeof(server_name) / sizeof(char*); USHORT server_port[]= {7, 13,25,80}; unsigned int server_port_count = sizeof(server_port)/ sizeof(USHORT); cout << "server get port from server name." << endl; for (unsigned int i = 0; i < server_name_count; i++) { PSERVENT server_info = getservbyname(server_name[i], "tcp"); server_info_show(server_info); } cout << "server get server name from port." << endl; for (unsigned int i = 0; i < server_port_count; i++) { PSERVENT server_info = getservbyport(htons(server_port[i]), "tcp"); server_info_show(server_info); } WSACleanup(); return EXIT_SUCCESS; }执行结果:
>GetServerInfo.exe server get port from server name. official server name:telnet port:23 proto:tcp official server name:domain port:53 proto:tcp official server name:http aliases list: www www-http port:80 proto:tcp official server name:ftp port:21 proto:tcp server get server name from port. official server name:echo port:7 proto:tcp official server name:daytime port:13 proto:tcp official server name:smtp aliases list: mail port:25 proto:tcp official server name:http aliases list: www www-http port:80 proto:tcp
相关文章推荐
- 主机名、服务与地址的映射——getaddrinfo(),getnameinfo(),gai_strerror()
- 项目获取端口getServerPort()和getLocalPort()区别
- 获取对应进程的内存使用情况(GetProcessMemoryInfo)
- 主机名、服务与地址的映射——getaddrinfo(),getnameinfo(),gai_strerror()
- python3 批量获取对应端口服务
- nginx配置转发后,jsp页面用request.getserverPort获取端口为80的问题
- 主机名、服务与地址的映射——getaddrinfo(),getnameinfo(),gai_strerror()
- soap和http get获取qq在线webservice服务
- com.microsoft.sqlserver.jdbc.SQLServerException: 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败
- 【转】用GetAdaptersInfo获取网卡信息
- 在Windows中查看端口及常用端口对应服务
- 利用GetProcessMemoryInfo 获取进程内存使用
- 安装 SQL SERVER MsiGetProductInfo 无法检索 Product Code 1605错误 解决方案
- 解决apache/nginx做反向代理导致request.getServerName()外网环境获取不到代理地址(或域名)的问题
- 解决apache/nginx做反向代理导致request.getServerName()外网环境获取不到代理地址(或域名)的问题
- UNIX怎么通过端口查到对应服务
- windows server 更改默认服务端口
- aws命令行获取服务限制数据(server limits)
- iptables禁止外网访问redis server服务默认端口6379的命令
- Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用