
import javaioBufferedReader;
import javaioIOException;
import javaioInputStreamReader;
import javanetInetAddress;
import javanetSocket;
import javanetUnknownHostException;public class Test { public static void main(String args[]) { // IP
String host = "120423788";
// 起始端口
int begin = 137;
// 截止端口
int end = 137; if (argslength > 0) {
host = args[0];
}
if (argslength > 1) {
begin = IntegerparseInt(args[1]);
end = IntegerparseInt(args[2]);
} try {
InetAddress theAddress = InetAddressgetByName(host);
for (int i = begin; i <= end; i++) {
BufferedReader networkIn = null;
try {
Socket theSocket = new Socket(theAddress, i);
Systemoutprintln("there is a serve on port" + i
+ " of " + host);
networkIn = new BufferedReader(new InputStreamReader(
theSocketgetInputStream()));
Systemoutprintln(networkInreadLine());
}
catch (IOException e) {
Systemout
println("there is no service on port "
+ i);
}
}// END FOR
}// END TRY catch (UnknownHostException e) {
Systemerrprintln(e);
}
}// END MAIN}
检测对于 IP的对应端口 是否有服务
用 cmdexe 程序来输入命令: netstat -ano | find ":你的端口号"找到了的话: taskkill /f /pid:你的进程PID(在上一条命令行中会列出进程PID) 正常的情况下,如果你的程序真的已经退出了,那个端口就会自动被 *** 作系统释放的,很可能你的程序还java 用ServerSocket监听了一个端口,在程序结束的
本地端口监听
import javaioIOException;import javanetServerSocket;
import javanetSocket;
import javautilconcurrentExecutorService;
import javautilconcurrentExecutors;
public class SocketServer
{
private ServerSocket serverSocket;
private ExecutorService executorService;// 线程池
private final int POOL_SIZE = 600;// 单个CPU线程池大小
public SocketServer() throws IOException
{
serverSocket = new ServerSocket(9888);//监听的端口号
// Runtime的availableProcessor()方法返回当前系统的CPU数目
executorService = ExecutorsnewFixedThreadPool(RuntimegetRuntime()availableProcessors() POOL_SIZE);
Systemoutprintln("服务器启动");
}
public void service()
{
while (true)
{
Socket socket = null;
try
{
// 接收客户连接,只要客户进行了连接,就会触发accept();从而建立连接
socket = serverSocketaccept();
executorServiceexecute(new Handlers(socket));
//这里就是放业务逻辑的地方例如获取数据等等
} catch (Exception e)
{
eprintStackTrace();
Systemoutprintln("socket Exception:" + e);
}
}
}
public static void main(String[] args) throws IOException
{
//Thread thread = new Thread(new PringtThread());
//threadstart();
new SocketServer()service();
}
}
端口扫描代码
import javaioIOException;
import javanetSocket;public class SearchPort implements Runnable
{
public static void main(String[] args)
{
SearchPort searchPort = new SearchPort();
Thread thread = new Thread(searchPort);
threadstart();
}
@Override
public void run()
{
searchPort("19216812", 0, 9999);
}
public void searchPort(String ip,int begin, int end) {
// 1-65535
Socket s = null;
for (int i = begin; i < end; i++) {
boolean flag = false;
try {
s = new Socket(ip, i);
flag = sisConnected();
} catch (IOException e) {
// TODO Auto-generated catch block
// eprintStackTrace();
}
if (flag) {
Systemoutprintln("port " + i + " is open");
try {
sclose();
} catch (IOException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
} else {
// Systemoutprintln("port " + i + " is close");
}
}
//Systemoutprintln("seach port :" + begin + " to " + end + " ok");
}
}
第一个端口监听的采用了线程池的技术,当大数据来的时候也不怕(某大型企业的部分源码),第二个例子是端口扫描器,采用了多线程扫描,代码直接复制就可以用的,从10点50分打代码11点半,不容易,望楼主采纳,有什么问题可以问我
以上就是关于java中如何用线程判断137端口的状态全部的内容,包括:java中如何用线程判断137端口的状态、java 用ServerSocket监听了一个端口,在程序结束的、谁有java本地监听与远程端口扫描 源程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)