Java网络编程基础002—端口

    技术2026-08-27  9

        既然IP用来标识计算机,那么什么来标识计算机上的网络应用程序? 答案是端口。端口是一个虚拟的概念,是16位二进制正整数,故取值为0-65535(十进制)。端口一共可以在一台计算机上存在12w+(2^17)个,因为端口属于传输层,传输层有两个重要协议(TCP和UDP),所以两边各65536个(2^16)。一般来说端口够用,因为计算机上用不到12w多个网络应用。

        端口0-1023为知名端口,也叫公认端口,比如20,21(ftp), 22(SSH), 80端口(http), 443(https) ,自己开发的应用程序一般不用

        端口1023-49151为注册端口, 比如3306(MySQL),8080(Tomcat)

        端口49152-65535为动态端口或者私有端口

         Windows查看所有使用的端口: cmd下

    netstat -ano

         Linux下查看所有使用udp和tcp的端口: shell下

    netstat -ntulp

         解决端口冲突(win10下mysql为例)

    1. 通过第一条命令找到对应进程号

    2.第二条命令通过进程号找到对应进程名(可选)

    3.任务管理器详细消息里结束任务

    更多的参数请查询相关手册。

    JavaDemo:

    import java.net.InetSocketAddress; import java.net.UnknownHostException; public class Main { public static void main(String[] args) throws UnknownHostException { // Socket: 插座, 插口, 套接字 InetSocketAddress socketAddress = new InetSocketAddress("127.0.0.1", 3306); // local host定义查看hosts文件 C盘Windows/System32/drivers/etc 显示所有文件 InetSocketAddress socketAddress2 = new InetSocketAddress("localhost", 3306); System.out.println(socketAddress.getHostName()); System.out.println(socketAddress2.getAddress()); // 端口 System.out.println(socketAddress.getPort()); } }

     

     

    Processed: 0.011, SQL: 9