酷!學園

技術討論區 => Network 討論版 => 主題作者是: van416 於 2012-06-09 12:00

主題: 在后台开启端口自动关闭问题
作者: van4162012-06-09 12:00
我用自己的程式 java -jar s.jar & 打开了一个端口9001
处于listen状态
代碼: [選擇]
[root@localhost server]# netstat -tlan | grep 9001
tcp        0      0 :::9001                     :::*                        LISTEN 

[root@localhost server]# jobs
[1]+  Running                 java -jar s.jar &

如果客户端在使用这个端口,就OK,
如果客户端没有使用这个端口,好像就会直接关闭这个端口,这是为什么啊。命令要怎么用才能让这个端口一直开启啊。谢谢


主題: Re: 在后台开启端口自动关闭问题
作者: redjack2012-06-09 17:33
這應該是程式的關係吧。
我之前寫的PYTHON 小server 一開始也是如此 ( 先做出一個可以溝通指令的東西),後續加上thread 來做才OK的 ( 持續運作與支持多客戶端)
就看成是一個http server, 客戶端終止連線不代表整個process 的結束.
主題: Re: 在后台开启端口自动关闭问题
作者: netman2012-06-09 22:09
給 xinetd 處理如何?
主題: Re: 在后台开启端口自动关闭问题
作者: HaWay2012-06-10 23:04
你有沒有做 fork ??
主題: Re: 在后台开启端口自动关闭问题
作者: FIEND2012-09-04 12:42
我用自己的程式 java -jar s.jar & 打开了一个端口9001
处于listen状态
代碼: [選擇]
[root@localhost server]# netstat -tlan | grep 9001
tcp        0      0 :::9001                     :::*                        LISTEN 

[root@localhost server]# jobs
[1]+  Running                 java -jar s.jar &

如果客户端在使用这个端口,就OK,
如果客户端没有使用这个端口,好像就会直接关闭这个端口,这是为什么啊。命令要怎么用才能让这个端口一直开启啊。谢谢

你是做 同步 IO ? 異步 IO?  ACCEPT 底下有迴路在跑嗎?

假設你使用 同步或異步 , 而且你知道 ACCEPT 底下要做 迴路.

我想這應該是常識 , 樓主應該觀念沒差到這種程度.

假設你都懂 那這問題 就跟 FORK 或 THREAD 沒有太大的關係.


#####


好久沒用 JAVA 了.... @@ 老實說 我討厭 JAVA 在網路層的執行效能和處理速度.

大多我都用在 應用層和展示層 , 比較底層的應用 , 我通常都拒絕使用它.

利用 Socket.setSoTimeout(expiredTime) 搭配 Socket.setKeepAlive(true)

再試看看吧.

1. setKeepAlive :
http://docs.oracle.com/javase/1.4.2/docs/api/java/net/Socket.html#getKeepAlive%28%29

2. setSoTimeout :
http://docs.oracle.com/javase/1.4.2/docs/api/java/net/Socket.html#getSoTimeout%28%29

3. connect :   ( 第二個參數 )
http://docs.oracle.com/javase/1.4.2/docs/api/java/net/Socket.html#connect%28java.net.SocketAddress,%20int%29



如果試了還有問題 , 再試試 物件裡 其它 參數.

http://docs.oracle.com/javase/1.4.2/docs/api/java/net/Socket.html


PS :

這問題非常直覺得看完 API 手冊就可以試出問題了.

JAVA 的 API 手冊 要常看 , 常用 , 常實驗 , JAVA 的物件庫很強大 , 慣壞很多人......

但是它的開發速度真的很省時....

要常玩玩 API 手冊裡每一個 物件裡的參數 使用上會有什麼效果.