前言
一个简单的socket小作品=v=
一个机酱在大三实验课中接触到很基础的JAVA语言socket编程。至于你问为什么嵌入式的机酱会弄些Java吗?emmmmm,可能是当初C语言版的不够好玩吧,另外如果碰巧有用,欢迎抱走的yoo
在之前的笔记《网络基础知识和网络编程》中有讲解过关于网络编程的一些基本知识,以及一些LinuxC的socket编程,希望粗浅了解socket内部肌理的同学,右转咱的学习笔记嘿。
.
试验内容
本次实验的内容是实现一个九宫棋游戏。
首先给不知道九宫棋的小伙伴们科普一下,九宫棋规则如下图:
如图所示,X先走,双方有一方将三个格子连成线(横竖斜都可以)则获胜,如果双方没能连成线而将格子占满则平局,很像是微缩版的五子棋~
.
实验要求
1、编写服务器,等待客户端连接游戏,为第一个连入的客户端分配标志“X”,为第二个分配“O”
2、第二个连入服务器的玩家名字不能与第一个重复。每回合向可以操作的玩家发送回合标志,“X”先行,随后切换为“O”如此循环
3、判断游戏是否结束,并将结果发送给玩家
4、编写客户端,可以连接服务器,等待服务器发送回合标志后向服务器发送想要走的格子号。
.
实验代码
服务器部分:
import java.io.*;
import java.net.*;
//定义玩家类
class Joueur {
Socket joueur = null;
DataOutputStream dataoutput = null;
DataInputStream datainput = null;
String name;
String mark;
//构造函数,初始化soket对象
Joueur (Socket j) {
this.joueur = j;
try {
InputStream input = j.getInputStream();
this.datainput = new DataInputStream(input);
OutputStream output = j.getOutputStream();
this.dataoutput = new DataOutputStream(output);
} catch (IOException e) {
System.err.println("Erreur ouverture des flux serveur");
System.exit(1);
}
}
void initJoueur (String name, String mark) {
this.name = name;
this.mark = mark;
}
}
import java.io.*;
import java.net.*;
// 创建服务器类
class TicTacToeServeur {
static final String MARK_1 = "X";
static final String MARK_2 = "O";
static final String MARK_NONE = " ";
static final String JOUEZ = "JOUEZ";
static final String POSITION = "POSITION";
static final String ADV_KO = "ABANDON";
static final String INVALIDE = "INVALIDE";
static final String GAGNE = "GAGNE"; //胜利
static final String FINI = "FINI"; //平局结束
static final