程序具体要求实现以下任一程序:
高效端口扫描器设计与实现:参照常见端口扫描器,在局域网内,能对所有计算机进行常用端口的高速扫描,给出扫描结果。另外根据配置不同的网段,实现正对校园网络的基于网段的高速扫描(可采用分布式方式)
偶是新手,java基础才刚学完一半,希望高手指点下
高效端口扫描器设计与实现:参照常见端口扫描器,在局域网内,能对所有计算机进行常用端口的高速扫描,给出扫描结果。另外根据配置不同的网段,实现正对校园网络的基于网段的高速扫描(可采用分布式方式)
偶是新手,java基础才刚学完一半,希望高手指点下
#include <windows.h>
#include <winsock.h>
#pragma comment(lib,"ws2_32.lib")
void main(int argc ,char * argv[]) {
WORD wVersionRequested;
WSADATA wsaData;
int err;wVersionRequested = MAKEWORD( 2, 2 );err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
WSACleanup( );
return;
}if (argc != 4) {
printf("缺少命令行参数!\n");
printf("用法如下:scan.exe IP 开始端口 终止端口\n");
exit(-1);
}
int startport = atoi(argv[2]);
int endport = atoi(argv[3]);
SOCKET s = socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_addr.S_un.S_addr = inet_addr(argv[1]);
for (int i = startport;i < endport;i ++) { addr.sin_port = htons(i);
if (connect(s,(struct sockaddr*)&addr,sizeof(addr)) != SOCKET_ERROR) {
printf(" port %d is open!\n",i);
} else {
printf("port %d is closed!\n",i);
}
}
}
贴出来了!
此题无解!
for(int i=0;i<65535;i++)
{
try{
s=new Socket("IP",i); //IP 要扫描的
System.out.println(" 端口"+i+"is open");
s.close();
}
catch(Exception e)
{
}
}
lz执意要用JAVA来做的话,小弟有个建议。使用JNI来做吧!
用其他语言写好程序后,在用JAVA的JNI来实现!
扫描的日志,可以记录下来,JAVA程序方便读取就OK