JAVA联机五子棋(四)
网络模块
定义Message 类
服务端
客户端
客户端发送线程
客户端接收线程
消息管理器
网络模块
定义Message 类
在我们开发联机五子棋的过程中最大的一个问题是,各种消息太过复杂,对话消息,下棋消息,邀请消息,悔棋消息,将这些消息标准化定义,让服务器能够识别收到的到底是什么消息就很重要。因此我们专门将定义的Code类,定义了一系列内部编码,当然大家直接用宏定义也可以。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293import java.io.Serializable;import java.util.LinkedList;public class Message implements Serializable { private s ...
JAVA 联机五子棋(三)
MVC模式
什么是MVC
模型(Model)
视图(View)
控制器(Controller)
MVC模式的工作流程通常如下
View
Model模块
Controller模块
“下棋”操作
“对手下棋”操作
“判断胜负”操作
悔棋操作
对手悔棋操作
MVC模式
现在我们先不来考虑联机的部分,单纯只考虑五子棋如何实现的,这里用MVC设计模式来实现
什么是MVC
模型(Model)
模型代表应用程序的数据和业务逻辑。它负责处理数据的存储、检索、更新和验证,同时也包括定义应用程序的业务规则。模型与用户界面和用户交互无关,使得数据的处理可以独立于视图和控制器。
视图(View)
视图是用户界面的表示,负责显示数据并将用户的输入传递给控制器。视图接收模型的数据并以某种形式(例如图形界面、命令行界面)呈现给用户。视图通常不包含业务逻辑,而只负责呈现数据。
控制器(Controller)
控制器是模型和视图之间的协调者。它接收用户的输入,根据输入更新模型的数据,并相应地更新视图。控制器负责将用户输入转换为对模型的操作,并通知视图更新以反映模型的变化。控制器使模型和视 ...
JAVA联机五子棋(二)多用户网络通讯实例——多用户群聊
多用户网络通讯实例——多用户群聊
定义传输信息类
服务端实例
服务端线程
客户端实例(使用了Swing)
客户端Receive线程
客户端Send线程
多用户网络通讯实例——多用户群聊
在实现五子棋之前我们先来熟悉一下适用于多用户的网络通讯。
首先我们来想一下,我们需要用几个线程吧,
首先是服务端,服务端需要几个线程呢,肯定是有几个用户就有几个线程,毕竟服务端要时刻准备接受客户端传来的消息(当然这种阻塞式的线程管理方法,在用户数量大的情况下自然是行不通的,毕竟没有服务器能跑几千几万个线程,这是就要用到JAVA专门用于这类操作的类库了)
然后考虑客户端,客户端需要几个线程呢,答案是两个,客户端的网络模块主要有两个部分的功能,一个是接手消息,另一个就是发送消息,因此我们要写一个SendThread,一个ReciveThread.
这时就有同学想要问了,为什么服务端不需要像客户端那样写发消息手消息两个线程呢,是因为服务端的收发消息都是同时进行的,收到一个立马发送掉,随收随发,因此它并不需要一个消息队列,也就不需要一个专门发消息的线程。
而客户端呢,客户端的收消息和发消息并不是 ...
JAVA设计联机五子棋
JAVAGUI设计——swing与awt
基本框架——JFream与JPanel
创建一个简单的JFream窗口
setLayout
BoardLayout
让程序更多交互——JDialog
dialog的相对位置
自定义你的UI组件
JPanel+Graphics drawimage
JButton setIcon
如何更新UI组件
JAVA网络编程
TCP协议与UDP协议
TCP(传输控制协议)
UDP(用户数据报协议)
优劣比较
TCP的优势
TCP的劣势
UDP的优势
UDP的劣势
Scoket
利用while(true)接收多条消息
JAVA多线程
双线程即时通讯客户端
多用户与服务器的连接
项目已上传至github https://github.com/DemonWhiteY/Gobang_online
百度网盘 链接:https://pan.baidu.com/s/1c7dflsJ9Q-Scg-0DVgOdkg?pwd=YYDS
提取码:YYDS
–来自百度网盘超级会员V3的分享
网盘下载可以看到Ser ...
vscode 配置unity代码无法自动补全问题的解决
不会还有人用vscode配置unity环境时最后出现代码无法自动补全的问题吧,本人就是这样………直接上手unity,开写代码时候才发现没有代码补全……于是就悲剧了,调整了两天才终于找到解决方法……
因此写这篇文章来告诉大家怎么解决这种问题,帮大家节省一点时间。
首先先吐槽一下某度和CSDN,屎山里觅食不是吹的,我搜了两天,愣是没找到对的解决方法,结果一用谷歌,头几个就是可行的方法。
下面首先介绍几种CSDN里的解决办法
打开 Unity,在 Unity 编辑器中点击 Edit -> Preferences -> External Tools
第一行 External Script Editor,选择 Visual Studio Code,如果没有的话点 Browse…,找到 VSCode 的程序即可(不知道在哪里的话找到 VSCode 的任意一个快捷方式,右键,属性,打开文件位置)。
在 VSCode 中安装必要的插件
打开 VSCode,在界面左侧的五个图标中找到 Extensions(最下面那个,找不到的话按快捷键Ctrl+Shift+X),如果你用 C# 写脚本的话搜 ...
入门小白必须知道的——C++三原则
面向对象的那些坑
刚刚接触C++面向对象编程的时候,大家肯能会对一些新的概念感到很陌生,比如说析构函数,拷贝构造函数这些东西,往往会说——“我也不用这些东西呀,要这有什么用呢”,但是,确实啊,不得不说,比如说析构函数,在大一的阶段里基本上是用不到的,有些题要是硬用析构函数可能还会给你抛个异常,但是如果咱们实实力见长以后又会这其实是比较重要的东西,直接关系了你程序的崩溃与否,今天就来从我最近犯的一个错误来和大家聊聊C++中著名的三原则。
先放上让我犯错的代码
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512 ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick Start
Create a new post
1$ hexo new "My New Post"
More info: Writing
Run server
1$ hexo server
More info: Server
Generate static files
1$ hexo generate
More info: Generating
Deploy to remote sites
1$ hexo deploy
More info: Deployment