在前面的几篇博客中已经记录了IP、端口、DNS等,这些东西的用途很大一部分是用来构建客户端与服务器的,那么客户端与服务器到底要怎么构建呢?
首先说说怎样构建客户端:
在构建客户端之前,我们需要知道,客户端是用来干什么的,简单点说客户端给用户使用的,一般安装在用户的机器上,它与服务器相对应模具个例子,你在菜市场上买菜,看中了一个摊上的水果,决定买,你和商家谈好价钱,你把钱给商家,商家就会收到一个消息,而商家反馈给你的就是你买的那些苹果,这个时候你就是客户端,商家就是服务器,客户端给服务器发送消息,服务器反馈给你消息。
从上面的例子我们能思考到什么呢?如果你要买苹果,你需要先有一个买苹果的意向,还需要一个买苹果的地点、买苹果的资格,这也就是构建客户端的几大要素,途径、目标、交流方式等
现在来构建一个简单的客户端吧
首先,你需要有一个要连接的目标,在客户端与服务器的构建中,由于彼此都需要一个要连接的对象,所以就产生了socket
Socket socket;//定义一个套接字用于与服务器的连接,这也就相当于买菜的时候的你不管你要干什么都需要通过你来完成
public void Connected()
{
try
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect("127.0.0.1", 8888);
}
catch(SocketException ex)
{
socket = null;
Debug.Log("连接失败,请重试");
}
}
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//在构建之前,如果不实例化,那么一切都是虚幻的不能进行,所以这句话就相当于吧你给充实起来,里面的参数分别代表着,1.你要在什么环境下交易2.你要以什么方式交易3.你们之间交易的形式是什么,这些条件都是在连接之前需要指定的,比较书面的解释是1.寻址类型2.套接字类型3.协议类型
下一句代码是开始连接服务器,如果想要连接的话,你需要知道服务器在哪里,端口是什么
所以参数给出的就是服务器的地址与端口
发送消息功能:
public void Send()
{
string senStr = InputField.text;
byte[] senfBytes = System.Text.Encoding.UTF8.GetBytes(senStr);//获取输入信息的字节
socket.Send(senfBytes);//将消息发送给服务器
byte[] readBuffer = new byte[1024];//用来储存从服务器接收到的消息
int count = socket.Receive(readBuffer);
string recvStr = System.Text.Encoding.UTF8.GetString(readBuffer, 0, count);
text1.text = recvStr;
socket.Close();
socket = null;
}
首先你要确定的是,你要发送的消息有多大,这就用到了System.Text.Encoding.UTF8.GetBytes(senStr);//获取输入信息的字节,发送的消息确定之后,还需要接收服务器(商家)反馈的消息,需要先开辟一块空间用来储存反馈的消息,由于在客户端和服务器之间的消息传递不能直接以字符串的形式传递,而只能以字节数组的形式,所以需要用这个System.Text.Encoding.UTF8.GetString(readBuffer, 0, count);将字节数组转换成我们想要获取的信息,参数分别是接收消息的字节数组,开始读取的索引,读取的长度,由于是简单的客户端的构建,所以我们之发送一次消息,接收一次消息就关闭了,也就是最后一句话
socket.Close();起到的作用就是关闭客户端。
以上只是个人的理解,有不对的地方请多见谅。