Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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 ObjectOutputStream/ObjectInputStream带套接字_Java_Sockets_Objectoutputstream - Fatal编程技术网

Java ObjectOutputStream/ObjectInputStream带套接字

Java ObjectOutputStream/ObjectInputStream带套接字,java,sockets,objectoutputstream,Java,Sockets,Objectoutputstream,我正在使用ObjectOutputStream制作一个在线游戏。。。交换数据。因为我有不同类型的数据,所以我只使用write/readObject()函数。我想知道发送命令字符串是一种好的做法,还是有更好、更安全的解决方案 当我说我发送带有字符串的命令时,例如我有一个聊天,我想忽略一个用户,所以我向服务器发送“block+username”;如果我想添加一个朋友,我会发送“addfriend+username”等等。如果你打算进行一次认真的安装,那么使用序列化对象可能会产生大量的互操作性工作。它

我正在使用ObjectOutputStream制作一个在线游戏。。。交换数据。因为我有不同类型的数据,所以我只使用write/readObject()函数。我想知道发送命令字符串是一种好的做法,还是有更好、更安全的解决方案


当我说我发送带有字符串的命令时,例如我有一个聊天,我想忽略一个用户,所以我向服务器发送“block+username”;如果我想添加一个朋友,我会发送“addfriend+username”等等。

如果你打算进行一次认真的安装,那么使用序列化对象可能会产生大量的互操作性工作。它也可能成为一个瓶颈。如果您寻找一个紧凑的自主开发的协议,我会坚持使用DataOutputStream(除了使用任何其他消息传递协议之外)

将字符串作为序列化java对象发送是最令人惊讶的事情(并且不容易让您拥有不同语言的客户端或服务器)


如果你想保持冷静,请使用JSON和Websocket.:)

应该没问题,只是要小心不要有人在字符串中插入无效字节(导致解码器崩溃),或者以某种方式欺骗他们本不应该发出的命令。换言之,程序非常具有防御性。但考虑到你基本上是在做“聊天命令”,我可能也会使用字符串。