文件传输编程
下面给你介绍3种解决方法:
解决方案一:
发送时发送一个记录客户端时间的包,同时记录好这个包的大小 。服务端在收到这个包后,拆包。取出客户端时间和自己的服务端时间时行差值计算。
然后,接下去就好做了
解决方案二:
在发送数据的时候获取当前系统时间,并将其作为初始时间保存下来(比如long beginTime=毫秒数),传输到客户端;然后再客户端收到文件后计算与当前系统时间的差值即可。
解决方案三:
long start=System.currentTimeMillis();
传输的过程或者方法调用
long end=System.currentTimeMillis();
System.out.println("传输时间"+(end-start)+"毫秒");
‘贰’ 用Java实现在两台电脑之间的文件传输
使用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取得连接了。之后就可以互相传递数据。