请教大家一个问题,在Linux上使用开发网络程序,使用socket侦听一个端口(9000),程序启动后使用netstat查看,9000端口状态是listen的,经过一段时间后【可能出现网络断开的情况】,在使用netstat -an|grep 9000就发现没有这个端口了
我单独使用一个线程去accept客户端的请求
线程启动后,首先让ServerSocketChannel先绑定一个端口
然后无线循环一直在做accept我想问的问题是:如果bind没有问题,在什么情况下,该ServerSocketChannel不再侦听某个端口,在什么情况下ServerSocketChannel会断开自己的侦听端口我首先确保线程没有终止,线程初始化时执行了一次bind,在线程的run方法中无线循环去accept先谢谢了!socket网络
我单独使用一个线程去accept客户端的请求
线程启动后,首先让ServerSocketChannel先绑定一个端口
然后无线循环一直在做accept我想问的问题是:如果bind没有问题,在什么情况下,该ServerSocketChannel不再侦听某个端口,在什么情况下ServerSocketChannel会断开自己的侦听端口我首先确保线程没有终止,线程初始化时执行了一次bind,在线程的run方法中无线循环去accept先谢谢了!socket网络
bind不懂是什么,linux环境没试过
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;public class ServerSocketTest extends Thread
{
private ServerSocket serverSocket; public ServerSocketTest()
{
try
{
serverSocket = new ServerSocket(9000);
}
catch (IOException e)
{
// 如果端口被占这里就会说异常
e.printStackTrace();
}
} @Override
public void run()
{
while (true)
{
try
{
Socket socket = serverSocket.accept(); // {..................}操作代码 }
catch (IOException e)
{
e.printStackTrace();
}
}
}}
我想问的是,当某个端口被正常侦听后,在什么情况下可以释放该端口不再被侦听(程序终止,死机除外)还有就是,例如:tomcat启动,正常侦听8080端口,此时使用什么工具在不停止tomcat服务器下,让它不再侦听8080端口
楼上的疑问的解释应该就是就是正常监听8080端口的情况下不在监听端口,在不修改tomcat源码的基础下,应该只能结束监听的线程。