在套接字上传递错误

时间:2010-02-20 16:05:55

标签: java python sockets

我正在编写一个通用的客户端 - 服务器套接字程序,客户端将命令发送到服务器,服务器执行它并将结果发送到客户端。

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

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

2 个答案:

答案 0 :(得分:0)

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

还开发了许多更复杂的协议。您可以构建一个Request对象,然后将其序列化并发送给客户端,而不是发送Strings。然后,客户端可以重建Request对象并执行请求,无论是执行错误还是运行命令。

答案 1 :(得分:0)

你已经(必然)建立了一些格式或协议,在这种格式或协议中来回发送字符串 - 要么你以某种方式终止每个字符串,要么首先发送它的长度,等等。 (TCP本质上只是一个流,所以没有这样的协议,接收者就不可能知道命令或输出何时完成! - )

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