Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 套接字上的传递错误_Java_Python_Sockets - Fatal编程技术网

Java 套接字上的传递错误

Java 套接字上的传递错误,java,python,sockets,Java,Python,Sockets,我正在编写一个通用的客户机-服务器套接字程序,其中客户机向服务器发送命令,服务器执行命令并将结果发送给客户机 但是,如果在执行命令时出现错误,我希望能够将错误通知客户机。我知道我可以发送字符串“ERROR”或者类似-1之类的东西,但这些也可能是命令输出的一部分。有没有更好的方法通过套接字发送错误或异常。 我的服务器是用Java编写的,客户端是用Python编写的,通常在进行客户机-服务器通信时,需要建立某种协议。一个非常简单的协议是在发送任何命令之前发送字符串“COMMAND”,在发送任何错误之

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

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


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

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

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


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

也许有一种方法可以从服务器端导致客户端套接字抛出异常?根据我的评论创建了一个问题: