Echo程序
echo程序是网络编程中最基础的案例包括建立网络连接客户端,客户端向服务器发送文本,服务器返回文本。
在UNity建立ui如图
ui介绍
1.连接到服务器的按钮用来建立网络的连接
2.文本框输入发送的文本
3.text用来显示返回的忘文本
4.发送用来方送文本
代码部分
新建名为Echo的C#脚本
代码如下
using system.Collect ions;
ueing System.Collections.Generic;using UnityEngine;
asing System .Net . Sockets;using UnityEngine.UT:
publle eclas Echo : HonoBeheviour (
//定义套接字
Socket socket;
//UGUI
public Inputrield;
public Text text;
//点击连接按钮
public void Connection(){
//Socket
socket : new sokeledadesamily.Interetwork,ocket
Socketype.stream, ProtocolType . Tep);//Connect
socket.Comn ct("127.0.0.1", 888);
}
//点击发送按钮
public void send(){
//send
string sendstr = InputFeld.text;
byte[] sendBytes = System.Text. Encoding. Default. GetBytes( sendStr);socket. send( sendBytes);//Recv
byte[] readBuff = new byte[1024];
int count = socket . Receive readBuff) ;
string recvStr = System. Text .Encoding .Default .Getstring(readBuff, 0, count);
Text.text= recvStr;
//close
socket.close();
}
代码写完后,把脚本挂载到任意物体上
UI上的按钮和脚本中的方法绑定即可。
由于现在没用编写服务端在此时运行客户端
unity会报错提示无法连接。
创建服务端程序
我使用的是最新版的vs2019,其他版本可能有所不同。
项目名称随意填入
但是要注意一下net框架的版本是不是和unity的版本是不是对应
2018.3版本的支持4.x,其他版本可以去百度
建立完成项目后服务端的代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("hello ");
//socket
Socket llistenfd = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//bind
IPAddress ipAdr = IPAddress.Parse("127.0.0.1");
IPEndPoint ipep = new IPEndPoint(ipAdr,8888);
llistenfd.Bind(ipep);
//listen
llistenfd.Listen(0);
Console.WriteLine("服务器启动成功");
//receive
while (true) {
Socket connfd = llistenfd.Accept();
Console.WriteLine("[服务器]accept");
//receive
byte[] readbuff = new byte[1024];
int count = connfd.Receive(readbuff);
string readStr = System.Text.Encoding.Default.GetString(readbuff, 0, count);
Console.WriteLine("[服务器接收]+"+readStr);
//send
byte[] sendBytes = System.Text.Encoding.Default.GetBytes(System.DateTime.Now.ToString());
connfd.Send(sendBytes);
}
}
}
}
当客户端发送文本到服务端后,服务端把当前的系统时间返回到客户端如图
先点击链接到服务器,再文本框里随便写点什么,点击发送
客户端就接收到了服务器传来的信息
注意
本文中的网络方法都是阻塞方法也就是说只要客户端没有接收到信息,就会卡住
下一篇文章介绍代码