解决方案 »
- java编写数据库查询执行器的问题?求帮忙看下
- 跪求,截取算法...
- A a = new A(); a.method(); 和 IA a = new A(); a.method();两者在jvm里运行时有何区别
- 用JAVA怎样实现文件分割合并
- 格式输出的问题
- 怎样使文本框光标右对齐!!
- java中关于集合的问题
- 寻树型java代码,实现从数据库取出数据,能够直接在树上添加/删除节点,并自动更新!
- 容器中的repaint()和validate()方法的区别?
- 读取png格式图片出现错误:javax.imageio.IIOException: I/O error reading PNG header!
- JAVA的说明文档在哪里下阿?(JAVA.SUN.COM上)
- 翻译问题?
email [email protected]
import java.net;
import java.io.*;
public class xx
{
public static void main(String args[])
{
for (int i=1;i<8000;i++)
{
try
{
Socket s=new Socket(args[0],i);
System.out.println(""+i);
s.close();
}catch(IOException e){}
}
}}
[email protected]
[email protected]
下面以C++ BUILDER写的一个主机扫描工具的核心代码为列说一下实现方法。
大家可以根据这个思路写一个java的,改起来很容易
#include <winsock.h>#define NETBIOSService 139 //139端口NETBIOS服务#define WWWService 80 //80端口WWW服务#define FTPService 21 //21端口FTP服务//以上是针对服务器而言#define BOService 31337 //BO木马的后门端口#define NETSPYService 7306 //NETSPY木马的后门端口#define BHService 7626 //冰河木马的后门端口//以上是针对个人计算机BOOL SERVERConn(hostent *SERHost,SOCKET SERSock,unsigned short nPort)//连接函数,hostent结构见帮助{SOCKADDR_IN Sock_in; //结构见帮助BOOL RetMsg;Sock_in.sin_family=AF_INET; //连接类型Sock_in.sin_port=htons(nPort); //所连接的主机端口 memcpy(&(Sock_in.sin_addr),SERHost->h_addr,sizeof(Sock_in.sin_addr)); //主机地址赋予结构以便下面调用Application->ProcessMessages();if((connect(SERSock,(LPSOCKADDR)&Sock_in,sizeof(Sock_in)))==SOCKET_ERROR) //开始连接并判断是否成功{RetMsg=FALSE; //此端口没有开放closesocket(SERSock);return RetMsg;}RetMsg=TRUE; //开放了shutdown(SERSock,0); //不许端口接收,发送数据但保持连接状态 closesocket(SERSock); //成功后马上关闭,以免return RetMsg;}WSADATA wsaData; //WSADATA结构见帮助SOCKET Sock;hostent *HostMsg;if(WSAStartup(MAKEWORD(1,1),&wsaData)!=NULL) //以WINSOCK1.1协议初始化{ShowMessage("初始化WINSOCK错误");WSACleanup();}HostMsg=gethostbyname(Edit1->Text.c_str()); //获取主机信息if(!HostMsg){ShowMessage("主机名称错误,请检查IP地址");WSACleanup();}else if((Sock=(socket(AF_INET,SOCK_STREAM,0)))==SOCKET_ERROR) //SOCKET函数见帮助{ShowMessage("SOCKET错误");closesocket(Sock);WSACleanup();}if(SERVERConn(HostMsg,Sock,WWWService)) //调用SERVERConn函数连接{Label3->Font->Color=clRed;Label3->Caption="发现服务"; //端口开放以红色显示closesocket(Sock);Sock=(socket(AF_INET,SOCK_STREAM,0));}else{Label3->Font->Color=clBlack;Label3->Caption="没有发现服务"; //没有开放以黑色显示closesocket(Sock);Sock=(socket(AF_INET,SOCK_STREAM,0));}
import java.net.*;
import java.io.*;public class HighPortScanner {
public static void main(String args[]) { String host="localhost";
int begin=0;
int end=65336;
if(args.length>0) {
host=args[0];
}
if(args.length>1) {
begin=Integer.parseInt(args[1]);
end=Integer.parseInt(args[2]);
} try{
InetAddress theAddress=InetAddress.getByName(host); for(int i=begin;i<end;i++) { BufferedReader networkIn=null; try {
Socket theSocket=new Socket(theAddress,i);
System.out.println("there is a serve on port"+i+" of "+host);
networkIn=new BufferedReader(new InputStreamReader(theSocket.getInputStream()));
System.out.println(networkIn.readLine());
} catch (IOException e) {
System.out.println("there is no service on port "+i);
} }//END FOR
}//END TRY catch(UnknownHostException e) {
System.err.println(e);
}
}//END MAIN}
无非也就是Socket编程加I/O!
主要是利用Socket来进行编写的
也发给我一份~
Thread(i)类.start()
Thread(i) 类
run(){ Socket(i).....}如果你会那么点点java,应该没问题了