【问题标题】:Android best way to send and receive from/to a serverAndroid 从/向服务器发送和接收的最佳方式
【发布时间】:2015-05-01 13:51:46
【问题描述】:

我正在开发一个应用程序,它需要每分钟与服务器通信,并让服务器知道客户端的位置。服务器在java中。

我是在 UDP 中完成的,但为此我必须做很多检查,例如,如果我发送我的“配置文件描述”,服务器必须向我发送一个数据包,其中包含“好的,我收到了你的新配置文件描述”。

我必须发送图片,使用 UDP 我需要发送很多数据包,服务器必须向我发送收到的确认信息,我还必须告诉他我发送的最后一个数据包是最后一个,所以它可以将我的图片设置为头像。

我认为 UDP 可能没用,我需要尽快发送信息以向服务器提供我的位置,但我还需要正确接收名称/描述/图片等信息。

提前致谢

【问题讨论】:

  • 这类问题过于宽泛,部分基于意见。 Stackoverflow 主要用于解决基于编程的问题。
  • @Chackle 我应该去哪里问?
  • 我个人会根据您的要求使用 TCP,但您应该更关注应该使用什么库来帮助您解决问题。为此,我会查看 Google 的 Volley 库。 GET 和 POST 请求非常简洁,从您所说的来看,这正是您所需要的。

标签: java android sockets communication


【解决方案1】:

UDP 与 TCP 的不同之处在于您不期望得到确认的确认响应。 例如,UDP 将最适合视频会议,因为如果每秒向服务器发送 25 个图片帧,并且在途中丢失了 4-5 个 - 没有理由再次发送丢失的帧,因此没有理由获得每个帧的确认确认响应。 但是,UDP 不是发送个人资料图片的最佳选择,因为如果服务器没有收到图片 - 它必须一遍又一遍地发送,直到我们从服务器得到确认的确认响应,说它得到了图片。

你写道:

一个App每分钟都需要与服务器通信,并让服务器知道客户端的位置

UDP 在这里可能是一个很好的做法,因为也许您并不真正关心是否丢失了一些网络包(因为稍后会发送其他包)。

但是,你也写了:

例如,如果我发送我的“个人资料描述”,服务器必须向我发送一个带有“好的,我收到你的新个人资料描述”的数据包。

和

我必须发送图片,使用 UDP 我需要发送很多数据包,服务器必须向我发送收到的确认信息

对于这 2 个工作,我建议使用 TCP - 因为您需要确保丢失的包裹被再次发送。更好的是,您可以研究更多有关 REST API 的信息,看看它是否适合您。 在 REST API 中上传图片的教程链接(Google 上的众多之一):http://examples.javacodegeeks.com/enterprise-java/rest/jersey/jersey-file-upload-example/

作为结论,我建议您将 3 个作业分为 2 组:UDP(每分钟位置)和 TCP/REST API(配置文件描述和照片上传)。如果您只想选择一个,请选择 TCP/REST API。

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    • 2019-12-30
    相关资源
    最近更新 更多