中国Linux公社论坛's Archiver

locifer 发表于 2004-7-11 22:57

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
  }
    }
   }
}

daixi 发表于 2004-8-13 08:41

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

njue 发表于 2004-8-13 09:15

这段代码,可能会导致大量的c程序员转行了。 :?

jarjarbinkx 发表于 2004-10-25 02:45

速度慢于本地实现多少呢?
想要更短的吗? try Jython, which I dreamed but never tried
这个帖子发得跑题ing :wink:

huyongzs 发表于 2004-10-25 18:39

最容易的
不是最技术的,不是最快的,也不是体积最小的
跨平台的,也不是最通用的.

architectcom 发表于 2004-12-16 23:18

反正和c相比,短得吓人。效率大概也不低多少。
呵呵,一秒钟给客人端一杯茶,和20秒钟给客人端一杯茶又相差多少哪?

BOoRFGOnZ 发表于 2005-1-26 17:06

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

antijp 发表于 2005-2-2 17:19

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

xujunxp 发表于 2005-9-13 16:04

目前来说还是C效率最高一点

mooniscrazy 发表于 2006-1-23 01:31

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

页: [1]

Powered by Discuz! Archiver 6.1.0F  © 2001-2007 Comsenz Inc.