基于JavaSocket类的课程设计

一、Socket基本概念

       1、建立连接

       建立网络连接时,必须有一台机器作为服务器端,运行程序抛出端口,随时等待客户端连接,而另一端为客户端,需要对服务器端发出连接请求。程序建立过程为:服务器端生成一个ServerSocket实例对象,监听客户端连接请求 --> 客户端生成一个Socket对象,并发出请求,请求包含host参数为主机名,以及port参数为端口号 --> 服务器接通过accept();方法收到客户端请求,同时建立一个接口与之连接,还生成所需的I/O数据流 --> 它们的通信都是通过一对InputStream和OutStream进行的,通信结束后,分别关闭对应的Socket接口。通信中,尤其注意通信阻断影响!

       2、关于连接

       客户端的Socket的两个参数,其中host参数为连接主机的地址,因为Socket连接的前提是在同一个互联网,所以该地址是不统一的。例如,如果本机与本机连作为测试,即一台机器既运行服务器端程序又运行客户端程序,这时的主机名就为"127.0.0.1"。另一个port参数为端口号,可以理解为它是服务器端为该连接标记的特殊序号,特殊到这个序号独一无二。只有客户端与服务器端指定的端口号一致时连接才会被建立。一个端口号即为一个连接,所以服务器端可以建立多个端口号,以达到与多个客户端通信,通信结束后,两端分别关闭对应的Socket接口,对其他端口毫无影响。

 

二、课程设计

       1、《比手速》是一款比图形变化速度的游戏。通过两台机器即两个玩家分别运行代码建立连接后,两台机器可用键盘控制界面里的圆圈使其变大,两边的圆圈是独立的,当一方的圆圈达到规定大小后,中止两台机器,分别在两台机器上弹出提示框,一方为获胜,则另一方为失败。

       分析游戏功能可知,该游戏有两个java文件,一个为服务器端另一个为客户端,并且两个文件都需要由四部分代码区实现,如下:

              a、图形界面区,将整个程序的展示界面渲染出来;

              b、键盘监听区,获取键盘输入,调用相对应的处理方法;

              c、图形动态变化区,对监听事件以图形变化的方式响应,并判断极限条件;

              d、Socket通信区,建立服务器端与客户端的连接,实现数据传输。

       2、代码区的代码组成

              a、图形界面区

JFrame,添加1个JFrame组件,用作底层容器显示框架,布局设置为BorderLayout。JPanel,添加2个JPanel组件:其一放置于底层布局SOUTH处,用于显示游戏规则;其二放置于底层布句CENTER处,布局设置为1×2的GridLayout,在两个网格中分别放置玩家的图形界面圆。JButton,添加1个JButton组件,将该按钮放置于SOUTH处的JPanel中,并在之后添加相关监听设置。

              b、键盘监听区

针对该区,设计了派生于KeyAdapter的AddKeyListener类,AddKeyListener包含两类监听,一类监听设置在键盘按键上,用于触发圆形半径的改变;另一类监听则用于触发玩家的胜利条件。

              c、图形动态变化区

该区派生于JPanel的CirclePanel类,用于专门提供变化和显示的方法。类的的成员有:变量 radius,表示圆形半径方法 ;enlarge()、shrink(),改变圆形半径方法; judge(),判断半径是否达到胜利标准。

              d、Socket通信区

服务器端:

服务器端创建ServerSocket的一个新端口,用于客户端的连接;获取socket的输出流,用于传出数据给客户端;获取socket的输入流,用于获取客户端的输出数据;当客户端与服务端建立起连接后才会整体显示出GUI界面,游戏才会正式开始;当气球到达我们所设置的判断或得胜利的值,服务器端会传输一个值告诉客户端你已失败,这时客户端需要设置一个循环一直判断服务器端是否有输出,若有输出,则证明自己已失败。

客户端:

客户端端创建Socket的一个对象,设置要连接的服务器端的ip地址和新创建的端口号;获取socket的输出流,用于传出数据给客户端;获取socket的输入流,用于获取客户端的客户端会传输一个值告诉服务器端你已失败,这时服务器端需要设置一个循环一直判断服务器端是否有输出,若有输出,则证明自己已失败。

 

三、关于代码

       源代码下载地址:https://download.csdn.net/download/qq_42442875/11341579

       使用说明:解压zip,打开文件夹可以看到如上图文件,主要文件是ControlCircleServer.java和ControlCircleClient.java两个文件,两张png图是界面背景,其他文件为运行文件

       由于代码里面的Socket类主机名参数设置为本地,所以可以直接在一台电脑上测试两个代码,下图分别为服务器端和客户端的Socket类应用。

        打开终端,按如下图输入,即可运行两个代码文件。

       完成上面操作,就会弹出两个界面,那么整个游戏就已经正式开始运行了。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值