解決:使用java連接Fastdfs,上傳文件時報:SocketTimeOutException的問題


最近研究了下分布式存儲Fastdfs,在centOS上配置完后,使用centOS或putty連接並上傳圖片,然后用瀏覽器讀取storage server返回的URL,一切正常.


但是,使用eclipse上傳圖片時,報錯:SocketTimeOutException.

報錯行為:String[] strings = storageClient.upload_file("D:\\120.jpg", "jpg", null);


網上查了將近一天,但卻沒有對應的解決方案, 唯一一個比較接近的說法是:tracker server的IP要用外網IP.

但是也沒說很具體.


經過親測,這種方法,對我的問題還是無法解決.

而且,Fastdfs的這個問題,在網上很少有人提及,所以研究了一下.


反復檢查API代碼,確認無誤.

反復檢查Fastdfs的配置,確認無誤.

把tracker server的IP換成外網IP,然后重啟storage server服務,發現卡住,無法重啟.


最后反復檢查配置文件,發現問題:

在storage server的conf中,第23,24行是這個:

# the storage server port
port=23000


這毫無疑問代表了storage server自己的端口號.

而,我們新裝的centOS,默認開啟的端口號,是很少的! 之前的80,8080,22122端口,都是自己后來手動開的.

而這個23000,很可能沒有開啟!!

經過確認,的確如此,開啟這個端口后,eclipse中上傳文件正常! junit綠條!


思考:

為什么前三個端口號能意識到並手動開啟,而這個端口,卻在最后才想到?

因為,在centOS或putty中調試時,前三個沒開的話,就會立即出問題.

但是,第四個端口,在centOS和putty中,即使沒開,也不影響上傳圖片或通過http訪問圖片的URL!

導致自己很難想到這個本身就很簡單的問題.


端口查看及開啟方式:

在centOS服務器或putty中:

1.查看打開的端口:

#/etc/init.d/iptables status

2.手動打開指定的端口(以23000 為例):

#/sbin/iptables -I INPUT -p tcp --dport 23000 -j ACCEPT

3.打開端口后,記得保存:

#/etc/rc.d/init.d/iptables save


原文:https://blog.csdn.net/jsflzhong/article/details/51647481


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM