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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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
Sockets MVC JavaFX聊天应用程序-套接字代码应该在哪里?_Sockets_Javafx_Model View Controller - Fatal编程技术网

Sockets MVC JavaFX聊天应用程序-套接字代码应该在哪里?

Sockets MVC JavaFX聊天应用程序-套接字代码应该在哪里?,sockets,javafx,model-view-controller,Sockets,Javafx,Model View Controller,我正在尝试将MVC架构应用到一个简单的多线程客户机-服务器聊天程序中。但是,在客户端,我不确定“连接到套接字”并从服务器读取消息的代码应该在哪里,在fxml视图的控制器(处理事件)或模型(存储有关聊天的数据)或启动整个程序的程序(创建场景和舞台,加载fxml并显示场景和舞台)中 我试图澄清我对MVC的理解:模型(我们称之为ChatModel)部分可以包含javafx.beans.Property或javafx.collections.observeList。然后,视图控制器将侦听此属性或列表更改

我正在尝试将MVC架构应用到一个简单的多线程客户机-服务器聊天程序中。但是,在客户端,我不确定“连接到套接字”并从服务器读取消息的代码应该在哪里,在fxml视图的控制器(处理事件)或模型(存储有关聊天的数据)或启动整个程序的程序(创建场景和舞台,加载fxml并显示场景和舞台)中

我试图澄清我对MVC的理解:模型(我们称之为
ChatModel
)部分可以包含
javafx.beans.Property
javafx.collections.observeList
。然后,视图控制器将侦听此属性或列表更改并更新视图对象。 这是MVC部分。
然后,您的通信层将打开聊天套接字并更新
ChatModel

它位于一个单独的线程中。这个线程应该能够与应用程序控制器通信。@mcwolf先生,是的,我以为它会在一个单独的线程中-但是线程将在哪里初始化和启动()?这取决于应用程序的设计。您可以通过按下“连接”按钮来运行它,例如(从控制器)或当应用程序启动时(在
main()
application::init()
application::start()
)。请记住,退出应用程序时必须停止线程。MVC是一种基本的设计模式,并没有描述这种情况。可以理解,但在聊天场景中,该模型可以用于什么样的示例?据我所知,它存储数据并对数据执行计算——最初我认为它可能存储来自服务器的数据,就像读取的消息一样。就聊天应用而言,模型中应该包含哪些“计算”和“数据”?如果模型做得更多,如果您提到它就更好了:p MVC模型描述了数据。计算通常是业务逻辑的一部分(它放在控制器中)。对于聊天应用程序,您可能有两种型号。在一个例子中,您描述了收到的消息和其他在线用户。当收到一条消息时,它被传输到控制器,控制器将其放入模型中。因此,视图将被刷新并显示一个新的视图。因此,这个“通信层”由与MVC分离的类组成?是的。插座应位于单独的层中。对于一个简单的应用程序,可以从上到下分为4层:视图、控件、模型和通信