最近时间有点忙,本来象棋游戏是有一个网络版本的,但是由于最近时间比较忙,一直没发出来.
最近有一些朋友希望看到网络版象棋,本来这个是学生将做的项目,这里我把这个DEMO给大家,相互学习.

网络象棋,不得不说一下TCP/IP协议,这其实是两个协议,即tcp协议和ip协议。
所谓IP协议,IP协议是在网络层的协议.它主要完成数据包的发送作用。
所谓TCP协议,TCP协议也是建立在IP协议之上的,不过TCP协议是可靠的.按照顺序发送的。
所以正是由于他们的特性,使得他们一起可以使我们网络数据传输可靠。一般我们常说的TCP/IP“三次握手”,其实也就是第一步客户机向服务器发送一个TCP数据包,表示请求建立连接,第二步服务器接收到请求数据包以后再向客户端发送一次响应数据包,第三步客户机接收到以后再想服务器发送一次确认数据包。服务器接受到以后,我们的连接也就成功。

那么socket(套接字)呢?其实也就是两台机器的远程节点,它的操作也包括,打开,关闭,读写等等。
具体的呢,大家可以去看一下关于TCP/IP的书,这里我就不予累赘。

这里呢,本来最早是用了一套我封装好的socket库来做连接和数据传输,后来由于一些原因要把把项目难度减小,所以就用了.net标准的TcpListener和TcpClient来做连接。

这里呢主要是采用原来单机版象棋进行功能扩展的,其实所谓网络版本,也就是将原本在电脑的输入操作换做网络数据输入,所以其他算法和设计都基本一样。这里我讲一下具体实现的网络部分
首先需要创建网络服务器和客户机的登陆部分
中国象棋(网络版) 转载                TcpClient client = new TcpClient();
中国象棋(网络版) 转载                IPAddress ip 
= IPAddress.Parse(this.tbIP.Text);
中国象棋(网络版) 转载                
int port = Convert.ToInt32( tbPort.Text);
中国象棋(网络版) 转载                client.Connect(ip,port);
中国象棋(网络版) 转载                Flag.PlayerType 
= Enums.ChessType.red;
中国象棋(网络版) 转载                TcpTransfer tranfer 
= new TcpTransfer(client);

相关文章: