用Java实现在两台电脑之间的文件传输

用Java实现在两台电脑之间的文件传输,第1张

使用Socket可以做到,不过直接编程一般都是在局域网内,如果要在不同局域网间通信,需要使用一台有公网IP的服务器,可以电脑A和电脑B同时连接服务器,然后A向服务器传递文件,服务器再将文件转发电脑B。也可以使用打洞的方式使A、B互联,此时服务器的作用是辅助打洞。A、B向服务器发送信息后socket不要关闭(假设使用10989端口),同时使用Serversocket绑定监听相同的端口(监听10989端口)。在java中有参数可以做到,具体方法请自行百度。服务器获取到A、B的外网地址和端口,将A的外网地址信息发送给B、将B的外网地址信息发送给A。然后使用A没有关闭的Socket向B发送一组信息(此时连接会失败,但是B的路由表上已经记录了A的信息),发送后A向服务器发送消息,服务器告诉B A已经发送消息。然后B使用未关闭的socket向A发送消息,就和A上监听的ServerSocket取得连接了。之后就可以互相传递数据。

如果你学过网络基础的话,应该知道现在流行的tcp/ip协议,Java支持的是网络层或ip层以上的 *** 作。
有很多种传递的方法,Java SE里面就有RMI方式,或Socket方式(分tcp和udp两种)。这些都属于C/S的方式。
另外Java EE里面以B/S方式主要是用客户端向服务器端的servlet/jsp发起请求实现的,其底层用的是>�0�2我知道apache有个commons net包,其中的FTPClient类可以实现客户端和服务之间的文件传输,但是我如果使用这种方式的话,就得将一台服务器上的文件传到我本地,再将这个文件传到另一台服务器上,感觉这中间多了一步 *** 作;我想请问大家如何能不通过本机,直接 *** 作两台服务器,将文件从一台服务器传到另一台服务器上,如果有人知道实现方式,希望不吝赐教,谢谢了!问题补充:<div class="quote_title"suziwen 写道</div<div class="quote_div"把JAVA程序放在其中一台FTP服务 器A上,通过A服务器上的JAVA登录到另一台FTP服务器,F代码执行文 件的上传,下载。 / /</div / /谢谢你们的回答,你们说的这种方式我明白。

这个需要看你的环境了,如果其它Linux都是在内网,网络环境可以排除,这时只关心业务,如果业务不复杂,这里毕竟是只开一个壳,业务处理都在另一端,但是如果传输到连接服务器上的数据比较大,那建议少开一些,比如并发300-400左右,要不会卡死,如果传输数据较小,那无所谓了,开个一两千都不是问题
但是如果其它服务器都在外网环境的话,那需要再加上带宽计算

这个问题从根本上来说是系统计算资源不足导致的,难于解决。
我们可以考虑解决的方向:
1 最简单的,换上更好的硬件,但要花钱;
2 其次,可以在服务器限制一次并发访问的数量,这样也能解决,但会导致一部分用户体验下降;
3 再次,仔细的分析后台代码,找出瓶颈所在,并通过优化算法等改进性能,但耗时最久,并且也不一定能最终解决。

每个项目一个表空间,这不会出问题。主要是3个项目最后打包的东西所用到的第三方提供的 jar 类库的共享问题。如果大家用相同的 jar 就尽量用同一个版本,如果没办法做到用同一个版本就尽量把它们放到自己的 ear 里面或 WEB-INF/lib 下面,不能直接把同一个 api 的不同版本同时放到服务器的 lib 目录下。
ear 本身是一个 zip 格式,它可以包括 ejb 的 jar, war 之类的,另外还可以把第三方的 springjar,hibernatejar 之类的也放在里面,然后你的 ejb 源文件夹的 META-INF/MANIFESTMF 里面的 Class-Path: springjar hibernatejar 这样用相对位置来引用第三方 jar 就可以了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13012192.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存