如何处理来自用户的意外输入流?
How to handle unexpected input stream from user?
我正在学习基本套接字I/O。我想知道处理无效客户端输入的最佳方法是什么。例如,服务器端的质因数搜索器,但用户向客户端键入一个字符而不是整数。
我们应该一开始就在客户端过滤输入流,还是设计一个服务器来处理无效输入并将消息发送给客户端,然后再发送给用户,或者最安全的方法是同时实现这两者?
I wonder what's the best way to deal with invalid User to Client input for example, a Prime factor searcher on server side but user type a character to client instead of a integer.
服务器应对传入消息缓冲区执行所需的验证。如果它不处理特定的有效负载,它应该知道如何处理此类未处理的消息。事实上,您需要从套接字中读取此类消息,以便读取其他格式正确的消息。例如......假设你有 M1,M2 按顺序进入套接字。 M1 无效,而 M2 是格式正确的受支持消息。如果不删除 M1,您将无法处理 M2。因此,在服务器上妥善处理此类消息很重要。
Should we filter input stream at the client side at the beginning or should we design the server to handle invalid inputs?
客户端代码有时可能不受您的控制。如果您可以控制其源代码,那么一定可以。上述规则也适用于服务器响应客户端。它应该遵循与客户预先商定的适当的参与规则。
我正在学习基本套接字I/O。我想知道处理无效客户端输入的最佳方法是什么。例如,服务器端的质因数搜索器,但用户向客户端键入一个字符而不是整数。
我们应该一开始就在客户端过滤输入流,还是设计一个服务器来处理无效输入并将消息发送给客户端,然后再发送给用户,或者最安全的方法是同时实现这两者?
I wonder what's the best way to deal with invalid User to Client input for example, a Prime factor searcher on server side but user type a character to client instead of a integer.
服务器应对传入消息缓冲区执行所需的验证。如果它不处理特定的有效负载,它应该知道如何处理此类未处理的消息。事实上,您需要从套接字中读取此类消息,以便读取其他格式正确的消息。例如......假设你有 M1,M2 按顺序进入套接字。 M1 无效,而 M2 是格式正确的受支持消息。如果不删除 M1,您将无法处理 M2。因此,在服务器上妥善处理此类消息很重要。
Should we filter input stream at the client side at the beginning or should we design the server to handle invalid inputs?
客户端代码有时可能不受您的控制。如果您可以控制其源代码,那么一定可以。上述规则也适用于服务器响应客户端。它应该遵循与客户预先商定的适当的参与规则。