2 acmen99 Acmen99 于 2016.01.26 19:26 提问

Socket通信问题,两个手机间进行文件传输?

有没有人Socket实现两个手机之间的文件传输??一个手机app做为服务端,另一个做为客户端,通过Socket连接后,两个app之间可以进行文件传输!急急急急急急

4个回答

u012508127
u012508127   2016.01.26 19:34

这个不难吧, 电脑如何的,手机也是如何呢?就相当于两台电脑。

Acmen99
Acmen99 连接断开的时候会发消息通知,传文件的时候要传文件名,又要传文件,我不知道如何来区分这些信息!
接近 2 年之前 回复
feng1790291543
feng1790291543   Ds   Rxr 2016.01.26 19:37

用http协议,上传下载什么的都有很多例子

Acmen99
Acmen99 谢谢,要求用socket完成!
接近 2 年之前 回复
91program
91program   Ds   Rxr 2016.01.26 22:23

两手机之间的Socket的实现与一台PC和一手机之间是一样的。
只不过由于手机都是公网的IP,且是动态的,每次连网后的公网 IP 一般都会不同。所以,客户端要求有输入连接服务器 IP的功能,其它没什么。

91program
91program 回复Acmen99: 每个客户端与服务器连接后,在服务器端应该每个终端都有一个单独的处理线程。然后,你需要为每分客户端确定文件名的访问规则。
接近 2 年之前 回复
Acmen99
Acmen99 恩恩,谢谢,我现在能实现客户端和服务端的连接,并能知道有多少客户端连接。就是文件传输的时候有点乱,我没法区分文件名和文件!
接近 2 年之前 回复
leilba
leilba   Rxr 2016.01.27 09:21

类似的实现过一个,用一般的java socekt就行了。
两个手机用局域网连接起来,一个作为客户端另一个作为服务端。
1.开始的时候,服务端监听端口,客户端发起连接请求
2.连接成功之后,客户端发送文件名,服务端接收到之后返回check1消息并开始继续监听文件内存信息。
3.之后客户端计算文件大小length,并将文件大小发送给服务端,服务端接收到之后返回check2
4.客户端发送文件,客户端发送完文件之后监听返回状态;服务端接收文件,服务端接收全length大小的文件内容之后,返回check3

客户端可以根据check的值来判断各个阶段发送是否成功,同时客户端的socket需要设置timeout的时间,这个时间可以设置得长一些,如果超时了的话,就当做连接断开了,弹窗显示连接断开。

最后给你个网上的参考连接
http://www.blogjava.net/sterning/archive/2007/10/13/152508.html

leilba
leilba 回复Acmen99: 你需要组织一下服务端和客户端的交流规则
接近 2 年之前 回复
leilba
leilba 回复Acmen99: 客户端和服务端连接上之后会需要保持长连接,那么服务器针对某个客户端的操作就是有顺序的,先文件名,再是文件内容,这个依靠这个顺序就可以判定出当前的是文件名还是文件内容,,而且你可以加一些控制的消息来进一步保证这个逻辑的完整性,比如说客户端要断开连接的时候,发送一个断开连接的请求给服务器,服务器确认之后,客户端再断开连接,当然服务器也可以加连接超时的设置来进一步保证
接近 2 年之前 回复
Acmen99
Acmen99 十分感谢,这个帖子我也看过了,初学者,我不太明白服务端如何区分客户端发过来的是文件名还是文件;我的服务端要实现能接收多个客户端的连接,所以每一个客户端连接上服务器后,我都会开启一个线程去处理这个客户端的数据。然而客户端连接上服务器后,可以选择断开(断开要发送消息通知服务端)或者发送一个或多个文件给服务器!
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!