通过网络传输文件:从客户端还是从服务器发送?

Transferring files over a network: Send from client or from server?

我目前正在研究客户端-服务器解决方案,通过套接字网络连接将文件传输到另一台机器。我对整个客户端-服务器的事情还很陌生,因此有以下问题——诚然是非常基本的——问题:

对于文件传输,如果我将文件从客户端发送到服务器或从服务器发送到客户端,这有什么不同吗?

任何对此的合格见解将不胜感激!

For the file transfer, does it make any difference if I am sending the file from a client to a server or from a server to a client?

基本上没有关系。建立连接后,您可以自由地双向发送数据。尽管您必须考虑到服务器不会接受发送给它的数据,除非它明确地从套接字读取数据。

更一般地说,服务器和客户端对于数据传输的自制实现来说是完全任意的。如果将其归结为最简单的概念,那么您只是打开一个套接字并在一侧向其写入数据,而在另一侧您正在从另一个套接字读取数据。

您可以选择实现能够连接其他客户端 (P2P) 并来回发送文件的单个客户端程序。在这种情况下,您可以调用 "server" 当前正在发送文件的程序,而 "client" 是当前正在接收的程序。

或者,您可以实现两个程序,一个用于客户端,一个用于服务器。您的服务器将监听连接,客户端将决定何时连接到服务器。

请记住,连接存在网络限制。如果正在侦听连接的程序位于防火墙之后,那么您必须确保转发的端口正确。如果您在 LAN 内连接机器,那么您可能没有什么可担心的。