打印

tcp端口扫描源程序(java)

tcp端口扫描源程序(java)

简单得超乎你想象吧,其实socket编程并不难,Java在这方面比C++要简单,但功能并不差于C++。


// Author: Mark Hall (Maybe)

import java.net.*;
import java.io.*;

public class lookForPorts {

// locate which of the first 1024 ports seem to be hosting TCP servers
// host is read in from the command line or defaults to localhost

   public static void main(String[] args) {

Socket theSocket;
String host = "localhost";

if (args.length > 0)
{ host = args[0]; }

for (int i = 0; i < 1024; i++)
{
  try {
   theSocket = new Socket(host, i);
   System.out.println("There is a server on port " + i + " of " + host);
  }
  catch (UnknownHostException e)
  { System.err.println(e); break;}
  catch (IOException e)
  { // must not be a server on this port
  }
    }
   }
}

TOP

说实话,没任何用处。。。。。。

TOP

这段代码,可能会导致大量的c程序员转行了。
没有实现不了的梦---MagicLinux

TOP

速度慢于本地实现多少呢?
想要更短的吗? try Jython, which I dreamed but never tried
这个帖子发得跑题ing
M MJJ's Friend, and it's hammer time!

TOP

最容易的
不是最技术的,不是最快的,也不是体积最小的
跨平台的,也不是最通用的.
AIM/Yahoo!(ID):huyongzs ICQ:295593421 msn/mail: huyongzs@hotmail.com GoogleTalk:huyongzs@gmail.com

TOP

反正和c相比,短得吓人。效率大概也不低多少。
呵呵,一秒钟给客人端一杯茶,和20秒钟给客人端一杯茶又相差多少哪?
九月独登楼,衣衫褴褛。欲长啸,恐遭天嫉。抬望眼,萋萋衰草迷离。昨日繁华竟凋敝,感万物枯荣不易。仗剑持国,徒逞书生意气。苦笑忆当年,曾自诩,贫贱难移。年少击铗放歌去,流年易逝豪情异。时不利,空悲戚,来生当得用武地。思平生落魄经历,竟无语,真道是人生如戏。塞北秋重金风起,金风凝绝英雄气,英雄气短何为继。饮一杯,歌一曲,叹一声,知音难觅。

TOP

[quote:fadba18826="huyongzs"]最容易的
不是最技术的,不是最快的,也不是体积最小的
跨平台的,也不是最通用的.[/quote]
对!

TOP

……
这个又不是Java的功劳,是Java的库比较多,做得比较完善而已,我来做一个C的库,把socket封装一下,完全可以做到同样的效果。纯粹的用代码长短进行比较有意思吗?

TOP

目前来说还是C效率最高一点
无才可去补苍天,枉入红尘若许年

TOP

不是用什么语言的问题,主要还是对网络协议的理解。
端口扫描程序对编程效率的要求并不高,但是这个算法不好。
一般的端口扫描程序都是用半连接的方法来扫描的。只要发送一个syn包就可以了。用java可能实现不了。因为java标准库不支持RawSocket。要是想省事,可以用C#,不过也是相当麻烦,不见得能省多少事。用C#的好处是编程灵活,可以将扫描程序做成一个类库,以后用起来方便。

TOP