通过构造方法绑定端口是创建ServerSocket对象最常用的方式:
public ServerSocket(int port) throws IOException
|
如果port参数所指定的端口已经被绑定,构造方法就会抛出IOException异常,但实际上抛出的异常是BindException。因为和网络有关的异常都是IOException类的子类,为了ServerSocket构造方法还可以抛出其他的异常,就使用了IOException。
如果port的值为0,系统就会随机选取一个端口号,但随机选取的端口意义不大,因为客户端在连接服务器时需要明确知道服务端程序的端口号。可以通过ServerSocket的toString方法输出和ServerSocket对象相关的信息。
ServerSocket serverSocket = new ServerSocket(1320); System.out.println(serverSocket);
|
运行结果:
ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=1320]
|
addr是服务端绑定的IP地址,如果未绑定IP地址,这个值是0.0.0.0,在这种情况下,ServerSocket对象将监听服务端所有网络接口的所有IP地址;port永远是0;localport是ServerSocket绑定的端口,如果参数port值为0,localport是一个随机选取的端口号。
在操作系统中规定1 ~ 1023为系统使用的端口号。端口号的最小值是1,最大值是65535。在Windows中用户编写的程序可以绑定端口号小于1024的端口,但在Linux/Unix下必须使用root登录才可以绑定小于1024的端口。
判断本机打开了哪些端口:基本原理是用ServerSocket来绑定本机的端口,如果绑定某个端口时抛出BindException异常,就说明这个端口已经打开,反之则这个端口未打开。
package server;
import java.net.*;
public class ScanPort
{
public static void main(String[] args)
{
if (args.length == 0)
return;
int minPort = 0, maxPort = 0;
String ports[] = args[0].split("[-]");
minPort = Integer.parseInt(ports[0]);
maxPort = (ports.length > 1) ? Integer.parseInt(ports[1]) : minPort;
for (int port = minPort; port <= maxPort; port++)
try
{
ServerSocket serverSocket = new ServerSocket(port);
serverSocket.close();
}
catch (Exception e)
{
System.err.println(e.getClass());
System.err.println("端口" + port + "已经打开!");
}
}
}
测试:
java server.ScanPort 1-1023
测试结果:
class java.net.SocketException
端口135已经打开!
class java.net.SocketException
端口445已经打开!
class java.net.SocketException
端口554已经打开!
分享到:
相关推荐
本地端口监听实现通过JAVA的ServerSocket类,创建ServerSocket对象并绑定要监听的本地端口,然后通过accept()方法接受连接请求,在新线程中处理请求。具体代码如下: ServerSocket ss = new ServerSocket(6666); //监听...
serversocket web服务器
ServerSocket的close()方法使服务器释放占用的端口,并且断开与所有客户的连接。当一个服务器程序运行结束时,即使没有执行ServerSocket的close()方法,操作系统也会释放这个服务器占用的端口。因此,服务器程序并不...
本章首先介绍 ServerSocket 类的各个构造方法,以及成员方法的用法,接着介绍服务器如何用多线程来处理与多个客户的通信任务。 本章提供线程池的一种实现方式。线程池包括一个工作队列和若干工作线程。服务器程序向...
socket和serversocket利用IO流编写的多线程连接相互发送消息
Socket+ServerSocket代码
本文系统讲解了java网络编程,serverSocket的使用方法及实例
在这种情况下,服务器会把此端口绑定到0.0.0.0上面,即在所有IP上面都绑定,即能在每个ip上面收到请求。至于0.0.0.0是什么,这里就不说了。 下面是一个测试程序,通过如下程序即可看到到底是怎么样的情况: package...
基于delphi的serversocket和clientsocket进行通信的程序.zip
用java写了几行代码(运行需要安装java运行环境),实现ServerSocket服务端,监听某些端口,客户端通过“telnet 服务器IP 端口号”检查服务器网络端口是否正常。 运行服务端: java -jar SystemPortLISTENCheckt.jar ...
基于B/S的,利用io输出流输入流。基于图形界面
在Java中,可以使用Socket和ServerSocket类来实现本地监听和远程端口扫描。Socket类用于创建客户端连接,而ServerSocket类用于创建服务器套接字。 本地监听的实现步骤如下: 创建ServerSocket对象并指定端口号 ...
一个简单的Android平台的ServerSocket样例。同一个局域网的手机可以通讯
本资源是java中socket与serverSocket连接的例子,包括客户端和服务器端的程序代码
Socket与ServerSocket编程实践聊天,服务器和客户端频繁通信
Java网络编程的基础知识、套接字编程、非阻塞通信、创建HTTP服务器与客户程序、数据报通信、对象的序列化与反序列化、Java反射机制、RMI框架、JDBC API、JavaMail API、MVC设计模式、安全网络通信、CORBA和Web服务
NULL 博文链接:https://zhangyulong.iteye.com/blog/840154
Android完全支持JDK本身的TCP,UDP网络通信API,也可以使用ServerSocket,Socket来建立基于TCP/IP协议的网络通信,也可以使用DatagramSocket,Datagrampacket来建 立基于UDP协议的网络通信
恢复DELPHI 6 以后 无 SERVERSOCKET和CLIENTSOCKET控件包
clientsocket and serversocket