比如说,某服务器的IP是192.168.1.99,在某号端口上
开放着一个别名为ServiceAAA的TCP服务,我知道IP了,
也知道服务别名了,怎样才能取得它对应的端口号?
注意,不能使用DLLImport getservbyname以及其它的winsock2的api。
5 个解决方案
#1
非著名服务无法知道。著名的服务,例如FTP,可以进行端口扫描,但是一个机器好几万端口,很耗时间。
.Net的基础类库中没有端口扫描功能,只部分支持几个著名服务。
.Net的基础类库中没有端口扫描功能,只部分支持几个著名服务。
#2
IPAddress serverip = IPAddress.Parse(DataOperation.FILE_SERVER_IP);
IPEndPoint ipe = new IPEndPoint(serverip, DataOperation.FILE_SERVER_PORT);
try
{
fileSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
}
catch
{
return DataOperation.ERR_CREATE_SOCKET_FAILED;
}
try
{
fileSocket.Connect(ipe);
}
catch
{
return DataOperation.ERR_CONNECT_FAILED;
}
return 0;
IPEndPoint ipe = new IPEndPoint(serverip, DataOperation.FILE_SERVER_PORT);
try
{
fileSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
}
catch
{
return DataOperation.ERR_CREATE_SOCKET_FAILED;
}
try
{
fileSocket.Connect(ipe);
}
catch
{
return DataOperation.ERR_CONNECT_FAILED;
}
return 0;
#3
好像只能扫描了。
#4
嗯,确实,我早先把System.Net和System.Sockets两个namespace的api都翻了一遍,
没有找到合适的东西。扫描是不能让客户接受的,恐怕只能建议客户改变需求了。。
我只是很奇怪为什么到了.net里面反而会把这功能给舍弃了。。
#5
很抱歉,不知道你这段代码什么意思。
#1
非著名服务无法知道。著名的服务,例如FTP,可以进行端口扫描,但是一个机器好几万端口,很耗时间。
.Net的基础类库中没有端口扫描功能,只部分支持几个著名服务。
.Net的基础类库中没有端口扫描功能,只部分支持几个著名服务。
#2
IPAddress serverip = IPAddress.Parse(DataOperation.FILE_SERVER_IP);
IPEndPoint ipe = new IPEndPoint(serverip, DataOperation.FILE_SERVER_PORT);
try
{
fileSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
}
catch
{
return DataOperation.ERR_CREATE_SOCKET_FAILED;
}
try
{
fileSocket.Connect(ipe);
}
catch
{
return DataOperation.ERR_CONNECT_FAILED;
}
return 0;
IPEndPoint ipe = new IPEndPoint(serverip, DataOperation.FILE_SERVER_PORT);
try
{
fileSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
}
catch
{
return DataOperation.ERR_CREATE_SOCKET_FAILED;
}
try
{
fileSocket.Connect(ipe);
}
catch
{
return DataOperation.ERR_CONNECT_FAILED;
}
return 0;
#3
好像只能扫描了。
#4
嗯,确实,我早先把System.Net和System.Sockets两个namespace的api都翻了一遍,
没有找到合适的东西。扫描是不能让客户接受的,恐怕只能建议客户改变需求了。。
我只是很奇怪为什么到了.net里面反而会把这功能给舍弃了。。
#5
很抱歉,不知道你这段代码什么意思。