Java 哪种套接字编程最好(TCP/UDP)?

Java 哪种套接字编程最好(TCP/UDP)?,java,sockets,tcp,udp,Java,Sockets,Tcp,Udp,我的客户端程序想向服务器发送一个大文件,作为回报,服务器程序返回一个两倍或三倍大小的文件 我的问题是,我应该使用哪种方法?TCP或UDP UDP programmin但很难实现这个问题太广泛了,但答案可能是TCP;如果您需要传输文件,TCP提供UDP不提供的订购和重传服务,没有理由重新发明轮子 尽管如此,为什么要重新发明HTTP呢?这听起来像是使用Web服务器的经典案例。您可以将其用于您的用例。 它非常常见,您可以将其与java一起使用以获取或上载 将文件发送到FTP服务器 请看一下这个问题:

我的客户端程序想向服务器发送一个大文件,作为回报,服务器程序返回一个两倍或三倍大小的文件


我的问题是,我应该使用哪种方法?TCP或UDP

UDP programmin但很难实现

这个问题太广泛了,但答案可能是TCP;如果您需要传输文件,TCP提供UDP不提供的订购和重传服务,没有理由重新发明轮子

尽管如此,为什么要重新发明HTTP呢?这听起来像是使用Web服务器的经典案例。

您可以将其用于您的用例。
它非常常见,您可以将其与java一起使用以获取或上载 将文件发送到FTP服务器

请看一下这个问题:


如果您仍然想自己实现它,我建议您使用TCP,因为它为您提供了一些服务:

  • 有序数据传输-目标主机根据序列号重新排列
  • 重新传输丢失的数据包-重新传输未确认的任何累积流
  • 无差错数据传输


  • 不太可能。文件传输有点需要可靠的传输。不需要,因为UDP是一种协议,不能保证数据包进入或按顺序进入。这肯定不是“最好的和容易实现的”。我知道TCP更好,但对于大文件,UDP的性能更好,因为UDP可以一次发送大数据包go@Ashish可能是它的性能更好,但关键是,它不容易实现。@chrylis UDP支持高达64 KB的数据包,而TCP通常为1.5 KB或9 KB。虽然您可以发送64 KB的数据包,但不能保证它会得到您的网络基础设施的支持,当然也会到达。您必须使用套接字吗?HTTP、FTP都有建议,或者您可以直接通过网络推送该文件。是的,我只想知道有关套接字编程的答案,我想我知道了。我的问题是,一个大文件可能高达1gb或更大。文件大小与此无关。今晚我刚刚通过HTTP下载了一个1.2GB的DBpedia转储文件,HTTP提供了一些不错的功能,比如恢复部分下载,您不必重新发明。在这种情况下,您需要TCP。如果发送的字节数超过532字节,UDP的可靠性就会降低。事实上,如果你发送得少,它是不可靠的。@chrylis如果你使用UDP,并按照Ashish的建议尝试在一个包中发送整个文件,这很重要。@chrylis我发现大、大、快、快都是非常主观的,甚至在数量级上也是如此。排序不是问题。问题是一个巨大的文件。如果使用UDP,则排序将是一个问题,因为UDP不保证顺序。我列出的要点是TCP与UDP之间的关系。@AJ。订购是个大问题。只需使用servlet;这是一个已经解决的难题,您不了解其中涉及的问题。@AJ。如果您希望文件以与之前相同的顺序到达,则顺序很重要。