我有一个客户端serever应用程序, 我的服务器接受来自多个客户端的连接。
客户端连接到服务器后,它会向服务器发送命令,服务器发送回复 回复是字符串或文件。
接受连接后在服务器端, 有一个套接字(与监听套接字分开)负责与客户端通信。
在客户端向服务器发送命令后,在客户端,我开始在同一个套接字上读取响应。
现在我的问题是文件,
客户端向服务器发送命令请求文件,服务器通过发送文件的二进制数据开始响应,如果文件都好,则传输正常, 但是如果在服务器端的文件传输过程中服务器出现读取问题,则无法将该问题传递给客户端,因为这是一对一的套接字通信......客户端会将任何传入的数据视为如果它是文件数据,直到开始时发送的文件大小不完整。
我确信这可能是一个反复出现的模式,我该如何解决这个问题?
答案 0 :(得分:0)
FTP通过两个连接实现此目的:命令连接和数据连接。
答案 1 :(得分:0)
只要这些是TCP / IP套接字,您需要的只是服务器和客户端之间的协议,前八个字节(例如)sent()和recv()ed分别代表的大小要遵循的二进制数据。 TCP / IP将确保所有部分到达并为您服务。 如果您有各种可以传输的文件,那么您同意下一个之后的四个字节表示文件类型的字符。所以你基本上保持recv(),直到你有12个字节,这可能只需要一个recv()。然后继续使用recv(),直到获得预期接收的所有字节为止。