Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.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

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 如何识别套接字数据的类型?_Java_Sockets - Fatal编程技术网

Java 如何识别套接字数据的类型?

Java 如何识别套接字数据的类型?,java,sockets,Java,Sockets,也许我不能恰当地表达我对这个问题的怀疑,但我还是会努力的。基本上,我创建了一个简单的基于套接字的聊天程序,一切正常。但是我想我已经从设计的角度在它上面做了很多补丁 我在程序中使用了ObjectInputStream和ObjectOutputStreams。我想问的问题是,如何识别通过网络发送的不同类型的数据?假设它是我直接添加到聊天信息列表中的简单字符串类型对象。现在,如果要禁止某些用户,我创建了另一个类:- public class User{ private String name;

也许我不能恰当地表达我对这个问题的怀疑,但我还是会努力的。基本上,我创建了一个简单的基于套接字的聊天程序,一切正常。但是我想我已经从设计的角度在它上面做了很多补丁

我在程序中使用了ObjectInputStream和ObjectOutputStreams。我想问的问题是,如何识别通过网络发送的不同类型的数据?假设它是我直接添加到聊天信息列表中的简单字符串类型对象。现在,如果要禁止某些用户,我创建了另一个类:-

public class User{
    private String name;
    private String id;
    //getters and setters
}
这个用户类到目前为止对我来说并不重要,但我创建它只是为了正确识别操作。因此,如果我收到一个
用户的
实例,我可以确定某些用户将被禁止。这样我就不必硬编码字符串了。我的意思是,首先我想发送类似于
“禁止的用户:”+userName
,然后我用“禁止的用户:”检查字符串是否开始,然后我采取一些措施:p。我创建了一个用户类,但在我的程序中它对我来说并不重要


我想知道直接发送字符串是一种好方法,还是为每个好的操作创建一个类。如果我不清楚,请告诉我。如果我有数百个操作,我是否必须创建数百个类才能通过instanceOf进行检查?现在说,如果我计划创建一个类似于BUZZ的功能,可以在yahoo messenger中使用。我是否应该再次创建另一个名为BUZZ的类?所以很容易识别

为什么不通过网络发送
操作
对象?然后,您可以将这些
Action
对象子类化为(例如):

  • BanUserAction
  • RecordChat
  • AddUser
  • 每个对象实例都包含所需的数据,例如
    BanUser
    包含要禁止的用户的名称

    您不需要使用
    instanceof
    ,因为每个对象都将实现一个公共的
    .act()
    方法。然后,您可以调用该方法,而不必关心传递给您的是哪个对象,因为对象本身将负责做什么(这是OO编程的核心原则-告诉对象为您做事情)

    请注意,
    act()
    方法可能需要向其中传递一些上下文,例如对包含聊天服务的引用