有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

socket上的java传递错误

我正在编写一个通用的客户机-服务器socket程序,其中客户机向服务器发送命令,服务器执行命令并将结果发送给客户机

但是,如果执行命令时出现错误,我希望能够将错误通知客户机。我知道我可以发送字符串“ERROR”或者类似-1之类的东西,但这些也可能是命令输出的一部分。有没有更好的方法通过socket发送错误或异常

我的服务器是Java,客户端是Python


共 (2) 个答案

  1. # 1 楼答案

    您已经(必然)建立了某种格式或协议,通过这种格式或协议,字符串被来回发送,或者您以某种方式终止每个字符串,或者首先发送其长度,或者诸如此类。(TCP本质上只是一个流,因此如果没有这样的协议,接收方就不可能知道命令或输出何时完成!)

    所以,无论您使用什么方法来划分字符串,只要使从服务器发送回客户端的结果每次都是两个字符串:一个是错误描述(如果没有错误,则为空),另一个是命令的结果(如果没有结果,则为空)。这对于发送和接收/解析来说都是微不足道的,并且开销最小(发送一个空字符串应该和只发送一个终止符或长度为0的字符串一样简单)

  2. # 2 楼答案

    通常,在进行客户机-服务器通信时,需要建立某种协议。一个非常简单的协议是在发送任何命令之前发送字符串“COMMAND”,在发送任何错误之前发送字符串“ERROR”。这将使必须发送的字符串数量增加一倍,但提供了更大的灵活性

    还有一些更复杂的协议已经开发出来。您可以构造一个请求对象,然后将其序列化并发送到客户端,而不是发送字符串。然后,客户机可以重构请求对象并执行请求,无论它是在执行错误还是在运行命令