怎么判定socket端口被占用

MattHgh 2008-02-26 08:50:00
java怎么判定socket端口被占用?
例如判定4567端口现在是否被站用
...全文
516 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanlujia 2008-03-04
  • 打赏
  • 举报
回复
如果println("ok!");就是通的;
不然就不是通的,代码里还有停止端口的语句 你可以参考到println("ok!");就可以了
hanlujia 2008-03-04
  • 打赏
  • 举报
回复
import javax.swing.Timer;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.net.*;
import java.io.*;
public class Test {
Timer time = null;

public Test() {
time=new Timer(2000, new TimeAction());
time.setInitialDelay(0);
time.start();
}

public static void main(String[] args) throws Exception {

// for(int i = 1025; i<1036;i++){
Socket sk=new Socket("10.193.139.7",1048);
if(sk!=null)
System.out.println("ok!");
BufferedReader read=new BufferedReader(new InputStreamReader(sk.getInputStream()));
BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(sk.getOutputStream()));
System.out.println(read.readLine());
writer.write("free"+"\n");
writer.flush();
System.out.println(read.readLine());
writer.write("123"+"\n");
writer.flush();
System.out.println(read.readLine());
writer.write("stop\n");
writer.flush();
System.out.println(read.readLine());
read.close();
writer.close();
sk.close();
// }
}
hanlujia 2008-03-04
  • 打赏
  • 举报
回复
import javax.swing.Timer;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.net.*;
import java.io.*;
public class Test {
Timer time = null;

public Test() {
time=new Timer(2000, new TimeAction());
time.setInitialDelay(0);
time.start();
}

public static void main(String[] args) throws Exception {

// for(int i = 1025; i<1036;i++){
Socket sk=new Socket("10.193.139.7",1048);
if(sk!=null)
System.out.println("ok!");
BufferedReader read=new BufferedReader(new InputStreamReader(sk.getInputStream()));
BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(sk.getOutputStream()));
System.out.println(read.readLine());
writer.write("free"+"\n");
writer.flush();
System.out.println(read.readLine());
writer.write("123"+"\n");
writer.flush();
System.out.println(read.readLine());
writer.write("stop\n");
writer.flush();
System.out.println(read.readLine());
read.close();
writer.close();
sk.close();
// }
}
wuxo84 2008-02-27
  • 打赏
  • 举报
回复
端口扫描

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

public class Portsniff {

public static void main(String[] args) {
// Create application frame.
//PortsniffFrame frame = new PortsniffFrame();

// Show frame
// frame.setVisible(true);
String ip="127.0.0.1";
String hostname=new String();
try{
InetAddress address = InetAddress.getByName(ip);
hostname=address.getHostName();
}
catch(UnknownHostException e){
System.out.println("Could not find "+ ip);
}
//////接下来开始嗅

for(int nport=1;nport<=60;nport++)
{
try{
Socket s=new Socket(hostname,nport);
System.out.println("The port "+ nport+"is open");
}
catch(IOException e){
System.out.println("The port"+nport+" is closed");
}
}
}
}
奋斗并快乐着 2008-02-27
  • 打赏
  • 举报
回复
serverSocket s = new serverSocket(4567);
端口被占用了会抛异常,拦截了再尝试下一个端口
MattHgh 2008-02-26
  • 打赏
  • 举报
回复


serverSocket s = new serverSocket(4567);
之前判定下4567是不是被站用

yes152 2008-02-26
  • 打赏
  • 举报
回复
java面向对象编程的一段代码
import java.io.*;
import java.net.*;
public class PortScanner {

public static void main(String[] args) {
Socket s = null;
for (int port = 0; port < 1024; port++) {
try {
s = new Socket("localhost", port);
System.out.println("There is a server on port " + port);
} catch (IOException e) {
System.out.println("Can't connect to port " + port);
}finally {
try {
if(s != null) s.close();
}catch (IOException e) {
e.printStackTrace();
}
}
}
}

}
睿音 2008-02-26
  • 打赏
  • 举报
回复
误解lz意思。呵呵,不好意思。对比4 5楼方法。我还是倾向于5楼方法。
yami251139 2008-02-26
  • 打赏
  • 举报
回复
程序里?你是說getConnection得時候?
那你Socket s = new Socket();
然后s。getLocalPort()
如果有port,返回port無則返回-1
反正點下后面很多方法,我搞不懂你要干什么?你為什么要在程序里判斷?
kokobox 2008-02-26
  • 打赏
  • 举报
回复

端口被占用跑异常,然后用try{}catch(){}块处理。
yami251139 2008-02-26
  • 打赏
  • 举报
回复
你 ping一下啊。。。
ping ip地址:端口。。。
MattHgh 2008-02-26
  • 打赏
  • 举报
回复
我在程序里需要判定下这个端口是不是站用中
睿音 2008-02-26
  • 打赏
  • 举报
回复
用网络通讯测试工具打开这个端口试下就知道了。例如周立功的:TCP&UDP测试工具。
healer_kx 2008-02-26
  • 打赏
  • 举报
回复
程序本身好像很难判断这点,可以调用netstat -an命令,然后解析字符串。
liang8305 2008-02-26
  • 打赏
  • 举报
回复
换一个做法吧
把端口设置为可配置的,swing的就用输入框,web的就用配置文件,怎么样都行

socket跑起之前配置好,如果跑不起来就换一个端口,再跑

让程序去判断是不是被占用,好像没什么意义
你要指定端口,那肯定不能让程序去决定用哪个端口的

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧