任何一个计算机系统,其端口都是独占的,这就是说:如果一个程序占有了某个端口,在它没有退出前其他程序是不能在占有该端口。很多这样的例子例如:不能用一个端口起两个tomcat。所有我们也可以利用这点开发一个独占的窗体,只有该窗体不销毁就不能启动第二个这样的窗体。
基本上不需要担心绑定端口会给系统造成什么负担或者影响,windows默认有65535个端口,只要你绑定一个比较大一些端口(20000以上),给系统造成冲突的可能性几乎没有,即便有了换一个即可。
对于运行未安装服务包的 Windows XP 或 Windows Server 2003 的计算机,下面给出了不同的端口范围:
众所周知的端口范围(由 IANA 保留):0 到 1023
临时端口范围(对于通配绑定):1025 到 MaxUserPort 注册表设置值
可用作特定端口(对于特定绑定):从 0 到 65535 的任何未封锁端口
保留端口的可用范围:1025 到 MaxUserPort 以及 49152 到 65535
封锁端口的可用范围:MaxUserPort + 1 到 49151(除非 MaxUserPort 的值设置为 49152 或更高,这种情况下没有可封锁端口范围)
一般用到的是1到65535,其中0不使用
一般的应用程序使用1024到4999用来通讯
5000以后的用来用户自定义端口
程序如下:
import java.io.IOException;
import java.net.ServerSocket;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class OnlyOneFrame extends JFrame{
private OnlyOneFrame(){
ServerSocket server;
try {
server = new ServerSocket(22333);
server.isBound();
} catch (IOException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(this, "您已经启动了一个窗体");
// 如果端口已经绑定,系统退出,释放内存。
System.exit(0);
}
setTitle("Your title");
setSize(805, 410);
setResizable(false);
setLocationRelativeTo(getOwner());
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new OnlyOneFrame();
}
}
分享到:
相关推荐
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
接下来的目标是在同一台机器上再启动一个独立的实例。 #### 3. 修改配置文件 为了能够同时启动两个实例,我们需要对以下配置文件进行修改: - **server.xml**:位于`jboss-4.0.2\server\default\deploy\jbossweb-...
2. 实现Runnable接口:创建一个实现了Runnable接口的类,并实现run()方法,然后将这个Runnable对象作为参数传递给Thread类的构造函数,创建Thread实例并启动。这种方式更灵活,因为Java不支持多重继承,但可以实现多...
1. **定义抽象产品**:例如,有一个`Vehicle`接口,它包含启动、停止等方法。 2. **实现具体产品**:可能有`Car`和`Bike`两个类,它们分别实现了`Vehicle`接口。 3. **定义抽象工厂**:创建一个`VehicleFactory`接口...
在Java编程环境中,Eclipse是一个广泛使用的集成开发环境(IDE),尤其适合于Java应用程序的...通过学习这个实例,开发者不仅可以掌握Java编程的基本技能,还能了解到如何在Eclipse中组织和运行一个完整的Java项目。
单例模式是软件设计模式中的一种经典模式,用于确保一个类只有一个实例,并提供一个全局访问点。在Java中,有多种实现单例模式的方法,每种都有其特点和适用场景。接下来,我们将深入探讨这些实现方式。 首先,我们...
例如,如果DLL有一个名为`addNumbers`的函数,我们创建一个`AddNumbers`接口,声明`addNumbers`方法,然后通过`NativeLibrary.getInstance()`加载库,最后通过接口实例调用方法。 - web项目中的servlet调用:在Web...
在AWS中,可以使用AWS SDK for Java来调用相应的API,例如`AmazonRDSClientBuilder`创建一个客户端对象,然后调用`startDBInstance`和`stopDBInstance`方法来启动或暂停实例。执行这些操作前,你需要确保已经正确...
`client.search()`方法会返回一个`SearchResponse`,从中解析出结果。 7. **Java REST客户端的使用**:`RestHighLevelClient`是Elasticsearch提供的高级Java客户端,提供了丰富的API用于操作索引、文档、搜索等。...
安装Jbuilder集成开发环境时,首先使用WINZIP将压缩的Jbuilder.zip文件解压缩到一个临时目录 中,然后执行临时目录中的setup.exe可执行文件,按照JBuilder安装向导完成JBuilder开发环境的 安装。在启动JBuilder开发...
* 执行过程为:启动类是否为继承关系树中的一个,如果是则先执行启动类的所有父类的静态语句块;然后执行启动类的静态语句块static{} -> * 执行启动类的main函数 -> 创建对象的继承树从高到底的类层次中的静态块...
在这个实例中,我们将探讨如何在Java中实现一个多线程的Socket服务器,以便同时处理多个客户端的请求。多线程是关键,因为它允许服务器并行处理多个连接,提高了系统的效率和响应速度。 首先,我们需要了解Socket的...
在"最好的电影播放软件.bat"可能是一个批处理文件,它可能是用来启动一个Java应用程序,例如一个简单的电影播放器,涉及到了文件操作和系统命令的使用。而"15geJavakechengsjsl"可能是这15个课程设计实例的源代码...
例如,`FirefoxDriver()` 创建一个Firefox浏览器实例,`ChromeDriver()` 创建Chrome浏览器实例。 2. **WebElement**: WebDriver API中的`WebElement`接口代表了网页中的单个元素。我们可以通过`findElement()`或`...
当你有一个实现了`Runnable`接口的类时,你可以创建一个`Thread`对象并传入你的`Runnable`实例,如: ```java Runnable task = new MyRunnable(); Thread thread = new Thread(task); thread.start(); ``` 这里,`...
在`main`方法中,我们创建了一个`Thread`对象,传入`MyRunnable`实例,并调用`start()`启动线程。 4. **线程同步**: 当多个线程访问共享资源时,可能导致数据不一致,这时需要进行线程同步。Java提供了以下同步...
例如,如果你创建一个"汽车"类,这个类的对象可能有"颜色"、"速度"这样的属性,以及"启动"、"加速"这样的行为。对象是程序中实际进行操作的单位。 其次,Java类是对象的蓝图或模板。它定义了一组特性和行为,这些...
本Java钟表实例是一个很好的实践案例,它综合运用了Java的基本语法、Swing GUI框架、多线程机制、日期时间处理以及数学计算等知识点。对于初学者来说,通过理解并动手实现这个项目,可以加深对Java编程的理解,同时...
这是因为`start()`方法会创建一个新的线程,并在该线程中调用`run()`方法。如果直接调用`run()`方法,则会在当前线程中执行,而不会创建新的线程。 - `start()`方法内部实际上调用了`native`方法`start0()`,并且会...