今天练习Java Socket用法的示例代码,发现一些问题

服务器代码:

import java.net.*;

import java.io.*;

public class Test_Socket {

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

// TODO Auto-generated method stub

ServerSocket ss =new ServerSocket (30001);

while(true)

{

Socket s = ss.accept();

PrintStream ps = new PrintStream (s.getOutputStream());

ps.print("hello");

ps.close();

s.close();

}

}

}

客户端代码:

import java.io.*;

import java.net.*;

public class Test_Socket_Client {

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

// TODO Auto-generated method stub

Socket s = new Socket("127.0.0.1",30001);

BufferedReader br= new BufferedReader(new InputStreamReader(s.getInputStream()));

String temp = br.readLine();

System.out.println(temp);

br.close();

s.close();

}

}

先执行服务器代码,再执行客户端代码。

但是当我修改服务器代码,同时企图再次执行服务器代码的时候,发生了一下的异常:

Exception in thread "main" java.net.BindException: Address already in use: JVM_Bind

at java.net.DualStackPlainSocketImpl.bind0(Native Method)

at java.net.DualStackPlainSocketImpl.socketBind(Unknown Source)

at java.net.AbstractPlainSocketImpl.bind(Unknown Source)

at java.net.PlainSocketImpl.bind(Unknown Source)

at java.net.ServerSocket.bind(Unknown Source)

at java.net.ServerSocket.(Unknown Source)

at java.net.ServerSocket.(Unknown Source)

at Test_Socket.main(Test_Socket.java:7)

也就是说,我的程序企图使用一个已经被使用过的端口,

问题出在服务器的程序一直没有关闭端口!

那么问题来了,既然打开了端口并一直监听,那么如何手动关闭对那个原先运行着的进程呢?

------------------下述部分来自百度

解法:

用 cmd.exe 程序来输入命令:

找到了的话:

正常的情况下,如果你的程序真的已经退出了,那个端口就会自动被操作系统释放的,很可能你的程序还没有退出,只是隐藏了。

举例,假如 tomcat 启动了之后:

得到 tomcat 进程号PID是 6435,再来:

java 监听客户端的退出_Java ServerSocket 手动关闭监听相关推荐

  1. java 监听客户端的退出_Java socket 服务端如何监控客户端异常关闭?

    慕函数4003404 关闭是会抛出异常的,捕捉之后进行处理,退出循环 @Override public void run() { Boolean isExit = false; while (!isE ...

  2. java服务器向客户端发消息_java一个简单的客户端向服务端发送消息

    java一个简单的客户端向服务端发送消息 客户端代码: package com.chenghu.tcpip; import java.io.IOException; import java.io.Ou ...

  3. java 能不能回收 文件流_Java文件流关闭和垃圾回收机制

    1.先看以下一段代码 import java.io.FileInputStream; public class TTT { public static void main(String[] args) ...

  4. java动作监听退出程序_监听获取程序退出事件(Linux、Windows、Java、C++)

    监听程序退出事件,主要是用于程序的优雅退出. 下面针对Java.C++在Windows.Linux下的处理分别进行介绍. 1.Java监听程序退出事件 Java本身是跨平台的,不必关系Windows还 ...

  5. java 客户端上传_java实现上传文件到服务器和客户端

    JAVA编写一个可以上传文件的服务器和客户端,具体内容如下 服务端 class Server { public static void main(String[] args) throws Excep ...

  6. java socket通信 客户端_JavaのSocket编程之简单客户端与服务器端通信

    Socket编程之简单客户端与服务器端通信 socket 通常用来实现客户端和服务端的连接,socket 是Tcp/Ip协议的一个十分流行的编程界面,一个socket 由一个Ip地址和一个端口号唯一确 ...

  7. 如何让服务器端持续监听客户端的请求?

    前面的程序,不管服务器端还是客户端,都有一个问题,就是处理完一个请求立即退出了,没有太大的实际意义.能不能像Web服务器那样一直接受客户端的请求呢?能,使用 while 循环即可. 修改前面的回声程序 ...

  8. java socket编程实现聊天程序_java Socket编程 聊天程序 服务器端和客户端

    [java]代码库package com.gufengxiachen.sthreadchatapp; /** * @author GUXIA */ import java.io.BufferedRea ...

  9. Android监听进入和退出第三方应用

    本篇文章基本实现,监听进入和退出第三方应用的功能.经验不足,有问题之处,欢迎留言指出,先三克油了.参考文章http://blog.csdn.net/xiao_chilun/article/detail ...

最新文章

  1. java io--内存操作流_JavaIO——内存操作流、打印流
  2. webbrowser设置为相应的IE版本
  3. angularjs 默认跳转
  4. eclipse设置格式化tab为4个空格和idea一样
  5. JavaScript数据结构和算法(转载)
  6. science图表_Science和Nature大部分图表都出自这款绘图软件,了解一下?
  7. C++ 虚函数实现:虚函数表 虚表指针
  8. 软件产品案例分析(团队)
  9. 【TVM帮助文档学习】Relay的代数数据类型
  10. 5个最佳免费Linux杀毒软件
  11. linux系统文件颜色所代表的意思
  12. 【PyTorch 自然语言处理】传统 NLP 快速回顾(计算语言学)
  13. 全网最详细的深度学习pytorch-gpu环境配置
  14. 基于snowfall的玫瑰花瓣飘落效果
  15. 西电工作笔记(部分)【10000字】【原创】
  16. Openlayers设置ESPG900913作为影射算法
  17. 1999~2019 年,互联网二十年发展史
  18. 【leetcode】592.分数加减运算(python)
  19. HDU2567:寻梦
  20. 匈牙利匹配、KM算法、卡尔曼滤波、SORT/deep SORT

热门文章

  1. 阮一峰react demo代码研究的学习笔记 - demo7 debug - how ref node is attached
  2. when will the ABindings be filled for json.JSONModel in SAP UI5
  3. why my CREATE_OW will not generate OSSET entry in OB buffer
  4. Middleware Monitor Cockpit SMWP
  5. Preload custom controller defined in runtime framework
  6. Fix error message: maven error: package org.junit does not exist
  7. SAP S/4HANA销售订单的类型建模细节
  8. html5图像调整大小,JavaScript调整HTML5画布中图像的大小
  9. html5步骤条,自定义步骤条 , 纯原生html + css
  10. jsonarray转liast_jsonArray转换成List