解决:使用java连接Fastdfs,上传文件时报:SocketTimeOutException的问题

Posted 116970u

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决:使用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

以上是关于解决:使用java连接Fastdfs,上传文件时报:SocketTimeOutException的问题的主要内容,如果未能解决你的问题,请参考以下文章

fastdfs在java中上传和查看没问题,Java调用删除的时候报错:2,错误信息:找不到节点或文件。求大神解决

解决 Maven 无法下载 fastdfs-client-java 依赖。

解决 Maven 无法下载 fastdfs-client-java 依赖。

SpringBoot项目整合FastDFS+Nginx实现图片上传

分布式文件服务器FastDFS之“文件上传后(JAVA),前(AngularJS)端代码"

Java实现FastDFS文件上传下载和删除