精华内容
下载资源
问答
  • 第4步:如果已经部署了应用程序且正在运行,需要将进程杀掉重新部署 (1)查看8080端口所在进程的进程号:lsof -i:端口号 (2)杀进程: kill -9 进程号(如第(1)步查出的进程号3219) 第5步:部署命令:no...

    第1步:下载并安装ssh secure shell工具:用于远程linux云服务器

    工具下载链接

    第2步:连接云服务器

    第3步:上传war包

    第4步:如果已经部署了应用程序且正在运行,需要将进程杀掉重新部署

    (1)查看8080端口所在进程的进程号:lsof -i:端口号

     

    (2)杀进程: kill -9 进程号(如第(1)步查出的进程号3219)

    第5步:部署命令:nohup java -jar ***.war > java_app_console.txt &    (命令输入后多敲2次回车键)

     

     

     

    展开全文
  • 始终,Java开发人员需要知道哪个应用程序正在使用高需求8080端口。 在本教程中,我们将向您展示两种查找Linux上使用端口8080的应用程序的方法。 1. lsof + ps命令 1.1调出终端,输入lsof -i :8080 $ lsof -i :...

    始终,Java开发人员需要知道哪个应用程序正在使用高需求8080端口。 在本教程中,我们将向您展示两种查找Linux上使用端口8080的应用程序的方法。

    1. lsof + ps命令

    1.1调出终端,输入lsof -i :8080

    $ lsof -i :8080
    
    COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    java    10165 mkyong   52u  IPv6 191544      0t0  TCP *:http-alt (LISTEN)

    注意
    如果有多个结果,请尝试lsof -i :8080 | grep LISTEN lsof -i :8080 | grep LISTEN

    1.2 PID 10165使用端口8080,键入ps -ef | grep 10165 ps -ef | grep 10165查找应用程序详细信息。

    $ ps -ef | grep 10165
    
    mkyong   10165  4364  1 11:58 ?        00:00:20 /opt/jdk/jdk1.8.0_66/jre/bin/java 
    //...
    -Djava.endorsed.dirs=/home/mkyong/software/apache-tomcat-8.0.30/endorsed 
    -classpath /home/mkyong/software/apache-tomcat-8.0.30/bin/bootstrap.jar:
    /home/mkyong/software/apache-tomcat-8.0.30/bin/tomcat-juli.jar 
    -Dcatalina.base=/home/mkyong/.IntelliJIdea15/system/tomcat/Unnamed_hc_2 
    -Dcatalina.home=/home/mkyong/software/apache-tomcat-8.0.30 
    -Djava.io.tmpdir=/home/mkyong/software/apache-tomcat-8.0.30
    /temp org.apache.catalina.startup.Bootstrap start

    :IntelliJ IDEA + Tomcat 8正在使用端口8080。

    2. netstat + ps命令

    只是不同的命令可以执行相同的操作。键入netstat -nlp | grep 8080 netstat -nlp | grep 8080获取PID并对其进行ps

    $ netstat -nlp | grep 8080
    
    (Not all processes could be identified, non-owned process info
     will not be shown, you would have to be root to see it all.)
    tcp6       0      0 :::8080                 :::*                    LISTEN      10165/java 
    
    $ ps -ef | grep 10165
    
    mkyong   10165  4364  1 11:58 ?        00:00:20 /opt/jdk/jdk1.8.0_66/jre/bin/java 
    //...

    参考文献

    1. 维基百科:Lsof命令
    2. 维基百科:ps命令
    3. 维基百科:netstat命令
    4. Mac OSX –哪个程序正在使用端口8080

    翻译自: https://mkyong.com/linux/linux-which-application-is-using-port-8080/

    展开全文
  • 同时在“高级配置”中检查下,java程序是否已通过防火墙,确保其处于允许连接状态,如图: 二、linuxlinux环境更简单,直接在防火请中将需要访问的端口开放就行,具体百度搜索,例如在centos7中: 1....

    一、Windows

    1.首先安装jdk/jre时允许其访问域、公用网络等,如果禁止了可在window防火墙中重新添加,如图

    打开上图所示进行添加,如图:

     

    同时在“高级配置”中检查下,java程序是否已通过防火墙,确保其处于允许连接状态,如图:

     

    二、linux 

    在linux环境更简单,直接在防火请中将需要访问的端口开放就行,具体百度搜索 ,例如在centos7中:

    1.执行 firewall-cmd --zone=public --list-ports 查看所开放的端口

    2.执行 firewall-cmd  --zone=public --add-ports=8088/tcp  --permanent 添加端口 其中permanent重启后依旧有效

    3.执行firewall-cmd --reload 重新在载入端口信息,在其他主机执行 telnet ip port 命令,检测端口知否放开

    展开全文
  • 1.Socket 定义套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套...

    1.Socket 定义

    套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。

    传输层实现端到端的通信,因此,每一个传输层连接由两个端点/。那么,传输层连接的断电是什么呢,不是主机,不是主机的IP地址,不是应用进程,也不是传输层的协议端口,传输层连接的端点叫做套接字(socket)。根据RFC793的定义,端口号拼接到IP地址就构成了套接字。所谓套接字,实际上是一个通信端点,每个套接字都有一个套接字序号,包括主机的IP地址与一个16为的主机端口号,即形如(主机IP地址:端口号)。例如,如果IP地址是210.37.145.1,而端口号是23,那么得到套接字就是(210.37.145.1:23).总之,套接字Socket=(IP地址:端口号),套接字的表示方法是点分十进制的IP地址后面写上端口号,中间用冒号或逗号隔开。每一个传输层链接唯一地被通信两端的两个端点(即两个套接字)所确定。

    2. Hello/Hi

    下面用Java简单的实现一个基于Socket通信的hello/hi程序:

    Server端:

    importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintWriter;importjava.net.ServerSocket;importjava.net.Socket;importjava.util.Scanner;classServer {privateSocket server;privateServer() {try{

    System.out.println("启动服务器!");

    ServerSocket serverSocket= new ServerSocket(8888);

    server=serverSocket.accept();

    }catch(IOException e) {

    e.printStackTrace();

    }

    }private voidlisten() {try{

    System.out.println("Listening!......");//从Socket中获得输入流

    InputStreamReader in = newInputStreamReader(server.getInputStream());

    BufferedReader br= newBufferedReader(in);//读取输入流中的一行并输出

    System.out.println(br.readLine());

    }catch(IOException e) {

    e.printStackTrace();

    }

    }private voidsend(String msg) {try{

    PrintWriter out= new PrintWriter(server.getOutputStream(), true);

    out.println("Server:" +msg);

    }catch(IOException e) {

    e.printStackTrace();

    }

    }public static voidmain(String[] args) {

    Server se= newServer();

    String msg= "";

    Scanner cin= newScanner(System.in);while (!msg.equals("#")) {

    se.listen();

    System.out.print("输入信息:");

    msg=cin.nextLine();

    se.send(msg);

    }

    }

    }

    Client端:

    importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintWriter;importjava.net.Socket;importjava.util.Scanner;classClient {privateSocket client;privateClient() {try{

    client= new Socket("127.0.0.1", 8888);

    }catch(Exception e) {

    e.printStackTrace();

    }

    }private voidsend(String msg) {try{

    PrintWriter out= new PrintWriter(client.getOutputStream(), true);

    out.println("Client:" +msg);

    }catch(IOException e) {

    e.printStackTrace();

    }

    }private voidlisten() {try{

    System.out.println("Listening!......");

    InputStreamReader in= newInputStreamReader(client.getInputStream());

    BufferedReader br= newBufferedReader(in);

    System.out.println(br.readLine());

    }catch(IOException e) {

    e.printStackTrace();

    }

    }public static voidmain(String[] args) {

    String msg= "";

    Client c= newClient();

    Scanner cin= newScanner(System.in);while (!msg.equals("#")) {

    System.out.print("Input: ");

    msg=cin.nextLine();

    c.send(msg);

    c.listen();

    }

    }

    }

    执行结果:

    Client发送hello,Server回应hi

              

    调用栈分析:

    为什么java实现socket通信这么方便呢,这就需要我们深入源码去一探究竟了,这里以Server端为例,追踪调用栈:

    实例化ServerSocket时,构造函数会调用ServerSocket的bind()方法,

    public ServerSocket(int port, int backlog, InetAddress bindAddr) throwsIOException {

    ...if (port >= 0 && port <= 65535) {if (backlog < 1) {

    backlog= 50;

    }try{this.bind(newInetSocketAddress(bindAddr, port), backlog);

    }catch(SecurityException var5) {this.close();throwvar5;

    }catch(IOException var6) {this.close();throwvar6;

    }

    }else{throw new IllegalArgumentException("Port value out of range: " +port);

    }

    }

    public void bind(SocketAddress endpoint, int backlog) throwsIOException {

    ...try{

    SecurityManager security=System.getSecurityManager();if (security != null) {

    security.checkListen(epoint.getPort());

    }this.getImpl().bind(epoint.getAddress(), epoint.getPort());this.getImpl().listen(backlog);this.bound = true;

    }catch(SecurityException var5) {this.bound = false;throwvar5;

    }catch(IOException var6) {this.bound = false;throwvar6;

    }

    ...

    }

    该方法会调用继承自抽象类AbstractPlainSocketImpl的PlainSocketImpl的socketBind()方法,在该方法中会调用native方法bind0(),从而实现将一个socket连接绑定到指定的本地IP地址和端口号。

    注:native关键字标注的方法为本地方法,一般是用其他语言写成的函数,常用来实现java语言对OS底层接口的访问。Java语言本身不能直接对操作系统底层进行操作,但是java允许程序通过Java本机接口JNI,使用C/C++等其他语言实现这种操作。在Windows系统中,使用native关键字标注的本地方法在编译时会生成一个动态链接库(.dll文件)为Java语言提供响应的本地服务。

    void socketBind(InetAddress address, int port) throwsIOException {int nativefd = this.checkAndReturnNativeFD();if (address == null) {throw new NullPointerException("inet address argument is null.");

    }else if (preferIPv4Stack && !(address instanceofInet4Address)) {throw new SocketException("Protocol family not supported");

    }else{

    bind0(nativefd, address, port, useExclusiveBind);if (port == 0) {this.localport =localPort0(nativefd);

    }else{this.localport =port;

    }this.address =address;

    }

    }

    接着,同样的步骤从ServerSocket的listen()方法可以一直追溯到PlainSocketImpl的sokectListen()方法的listen0(),该方法主要为了设置允许的最大连接请求队列长度,当请求队列满时,拒绝后来的连接请求。

    最后,同样,从ServerSocket类的accept()追溯到accept0(),等待连接请求的到来。

    3. Java Socekt API与Linux Socket API对比

    Linux提供的响应Socket API在sys/socket.h中,分别为:

    int socket(int domain, int type, intprotocol);

    从函数名就可以看出,socket函数可以创建一个socket,

    其中,domain参数告诉系统使用哪个底层协议族,对TCP/IP协议族而言,该参数应该设置为PF_INET或PF_INET6,没错,分别对应IPv4和IPv6,对于UNIX本地域协议族而言,该参数应该设置为PF_UNIX,具体socket系统支持的所有协议族,请读者自行参考其man手册。

    type参数指定服务类型,主要有SOCK_STREAM流服务和SOCK_UGRAM数据报服务,对TCP/IP协议族而言,其值取SOCK_STREAM表示传输层使用TCP协议,取SOCK_DGRAM表示传输层使用UDP协议。

    protocol参数是在前两个参数构成的协议集合下,再选择一个具体的协议。不过这个值通常是唯一的,几乎在所有情况下,我们都应该把它设置为0,表示使用默认协议。

    熟悉UNIX/Linux的同学应该知道,在这类系统中,所有的东西都是文件,socket也不例外,可读,可写,可控制,可关闭的文件描述符。socket函数调用成功时返回一个socket文件描述符

    int bind(int sockfd, const struct sockaddr *addr, socklen_t addelen)

    bind将my_addr所指的socket地址分配给未命名的socketfd文件描述符,addrlen参数指出该socket地址的长度。bind成功时返回0,失败则返回-1并设置errno,常见为EACCES和EASSRINUSE,前者代表被绑定的地址是受保护的地址,仅超级用户能够访问,后者表示被绑定的地址正在使用中。

    值得注意的是,Client端通常不需要bind socket而是采用匿名方式,OS自动分配socket地址。

    int listen(int sockfd, int backlog);

    socket被bind之后还不能马上接收客户的连接,需要创建一个监听队列存放待处理的客户连接,服务端通过listen进行监听。

    sockfd参数指定被监听的socket,backlog参数体时内核监听队列的最大长度,如果超过,服务器将不再受理新的客户端连接,客户端也将收到ECONNREFUSED错误信息。listen成功返回0,失败返回-1并设置errno。

    int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

    最后一步为accept,其中sockfd参数是执行过listen系统调用的监听socket,addr参数用来获取被接受连接的远程socket地址,该socket地址的长度由addlen参数指出,accpet成功时返回一个新的连接socket,该socket唯一地标识了被接受的这个连接,服务器可通过读写该socket来与被接受连接对应的客户端通信,accept失败时返回-1并设置errno。

    其实,Java也是调用Linux网络API实现网络通信的,通过调用这些系统API来实现它的底层功能的,从调用分析时贴出的源码中可以看出,在Java的ServerSocket创建时就对方法进行了socket的bind和listen操作,一个方法就封装了3个API,即ServerSocket的实例化过程就对应了Linux中的socket(),bind(),listen(),而Java中的accept对应了Linux的accept函数,相关对应关系如下图所示(图来源https://blog.csdn.net/vipshop_fin_dev/article/details/102966081):

    所以,Java将这一切全都封装起来,这使得面向网络的编程对于Java程序员来说变得十分简单,我们只需要知道使用的哪一个类(实际上也就是ServerSocket和Socket两个类),为它们传入必要的地址参数,就能够轻松实现Socket通信。

    展开全文
  • 在测试和运维环节经常需要部署多个应用程序在同一台服务器上,这样经常就会碰到端口冲突的问题(即端口被其他服务程序占用),那么如何查找出是哪个应用程序占用了要使用的端口呢?下面几招教你快速解决端口冲突问题。...
  • 在非root用户的场景下,如果应用中启动的端口在1024以下,会报一个端口绑定权限的异常: java.net.BindException: Permission denied ...... ...... ......   这是因为linux的系统安全考虑的问题,无权限...
  • linux 端口占用查看

    2021-01-17 09:24:28
    1.lsof -i:7080 查看时7080端口情况 如果有信息输出表示有应用在占用 2.使用netstat -tunlp | grep 7080 有...3. lsof 输出的结果 PID 是进程号 5137/java 表示:7080 这个端口java程序在使用 进程号是5137 ...
  • (1)ping : 功能是检测主机,执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。...如果我们的应用程序(如Web浏览器)运
  • 它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序。  本文只介绍如何使用JSch实现的SFTP功能。  SFTP是Secure File Transfer Protocol的...
  • 1.查看端口被哪些程序占用(如,包含80的端口) netstat -ano|findstr &...2. 根据pid(进程id) 查询对应的应用程序 tasklist|findstr "3480" 3. 结束该程序 taskkill /f /t /im java.exe ...
  • linux/Windows 端口/进程

    2011-10-10 11:15:05
    liunx 1. 可以通过"netstat -anp" 来查看哪些端口被打开。...3.关掉对应的应用程序,则端口就自然关闭了,如: "kill -9 1463 " (PID:进程号) [code="java"] //一 ,查看 进...
  • 有的时候我们想找到某个端口被那个程序程序占用,然后 kill掉他,所以今天就来探讨一下. 1、netstat -apn|grep port | 关键字(java/kafka/nginx) 图中所示,最后显示的就是 pid和对应的应用名 然后执行 kill ...
  • 应用场景描述在有些时候我们去确定哪个服务占用了哪些端口,比如一些java程序占用了多个端口的情况,这时候就需要根据Java进程的进程ID来定位端口占用情况二 解决方法找到PIDps -ef|grep task|grep java|awk '{...
  • 主要代码: ...(注:加参数’-n’会将应用程序转为端口显示,即数字格式的地址, 如:nfs->2049, ftp->21,因此可以开启两个终端,一一对应一下程序所对应的端口号)。 然后可以通过”~...
  • Centos7命令之linux jar包运行关闭和解除端口占用等命令linux jar包操作命令CentOS7 查看端口是被哪个应用/进程占用及kill命令 linux jar包操作命令 1、执行jar包的命令和在windows操作系统上是一样的,都是java -...
  • Linux平台下,tomcat服务器的安装部署,包括环境变量配置,启动端口,服务器启动关闭等。以及如何打包上传java web程序到tomcat 服务器,linux常用服务命令
  • 查看应用程序PID ps -ef | grep tomcat 2.根据PID查看端口 netstat -anop | grep PID 3.结束进程 kill -9 PID 4.war包启动的项目修改端口 java -jar jenkins.war --ajp13Port=-1 --ht...
  • 以下可以应用于:Linux、Windows、Mac系统。 我因为网上的文章走了很多弯路,这里如果只是做监听,不需要开启SNMP服务,只需要看下面的代码即可,如果是发出告警是需要开启SNMP服务的。 实现时有以下几个问题需要...
  • Java聊天室程序源码(毕业设计)

    热门讨论 2009-03-01 16:33:58
    Java聊天室程序源码 2 需求分析 2.1 业务需求 1. 与聊天室成员一起聊天。 2. 可以与聊天室成员私聊。 3. 可以改变聊天内容风格。 4. 用户注册(含头像)、登录。 5. 服务器监控聊天内容。 6. 服务器过滤非法内容。 7...
  • 1.文件查找命令 find /usr -name *.txt *正则表达 2.jar文件启动 java -jar xxx.jar 3、通过"netstat -anp" 来查看哪些...4、关掉对应的应用程序,则端口就自然关闭了,如:"kill -9 PID" (PID:进程号) ...
  • linux常用命令(一)

    2018-11-08 09:14:16
    为了安全和稳定性,我们的项目...1. 查看端口对应的应用程序 lsof -i:xxx 2. 关闭端口 kill -9 PID" (PID:进程号) 3.查看Java进程 ps -ef | grep java  4. 查询JAVA虚拟机进程 pidof java 5.解压缩文...
  • Java开发如何像Linux上后台运行应用程序,实现方式如下: @echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit :begin java -ja.....
  • 需要Java 8或更高版本才能运行该应用程序。 关于 TachiWeb服务器为使用Tachiyomi后端的程序提供了一致且灵活的API。 TachiWeb-Server允许多个程序同时使用同一个Tachiyomi库,并为构建其他前端提供了基础。 当前,...
  • 愤怒的IP扫描器是一个小的开源Java应用程序,它执行主机发现(“ping扫描”)和端口扫描。 旧的2.x版本只有Windows,但是,新的3.X系列在Linux,Mac或Windows上只要安装了Java就可运行。 版本3.X省略吸血鬼斑马标志...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

空空如也

空空如也

1 2 3 4 5 6
收藏数 111
精华内容 44
关键字:

java应用程序端口linux

java 订阅
linux 订阅