Socket在Unity中的使用

Server端的创建(VS中建立控制台)

1.创建一个Socket

命名空间: System.Net.Sockets

Socket tcpServer=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);   
//三个参数,寻址方案,套接字类型,协议类型

2.绑定ip和端口

 //IPAddress iPAddress = new IPAddress(new byte[] { 127,0,0,1});
 IPAddress iPAddress = IPAddress.Parse("127.0.0.1");   //两种方法                                                           
 IPEndPoint endPoint = new IPEndPoint(iPAddress,5000);   //网络终结点为 ip的端口
 tcpServer.Bind(endPoint);   //向操作系统申请一个可用的ip和端口来进行通讯            

3.监听客户端的请求

 tcpServer.Listen(100);    //最多监听100个客户端
 Console.WriteLine("Server 启动完成");
 Socket clientSocket= tcpServer.Accept();    //暂停当前线程,直到一个客户端连接过来
 Console.WriteLine("客户端连过来了");

4.发送/接受消息

 string message = "Hello Client!";
 byte[] buffer= Encoding.UTF8.GetBytes(message);   //将字符串转换成字节数组
 clientSocket.Send(buffer);
 Console.WriteLine("Server发送:"+message);
 //接受消息
 byte[] data = new byte[1024];   //存放消息的字节数组容器
 int length = clientSocket.Receive(data);   //data长度
 string receiveMessage=Encoding.UTF8.GetString(data,0,length);
 Console.WriteLine("Server接受到:"+receiveMessage);

客户端的创建(Unity中)

private Socket tcpClient;
public string serverIP="127.0.0.1";     //服务器ip
public int port=5000;                   //进程端口
void Start ()
{
    //1.创建一个Socket
    tcpClient = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

    //2.建立连接请求
    IPAddress iPAddress = IPAddress.Parse(serverIP);
    IPEndPoint endPoint = new IPEndPoint(iPAddress,port);

    tcpClient.Connect(endPoint);   //连接
    Debug.Log("客户端请求连接");
    //3.接受消息
    byte[] data = new byte[1024];
    int length = tcpClient.Receive(data);
    string receiveMessage = Encoding.UTF8.GetString(data);
    Debug.Log("接受到:"+receiveMessage);

    //发送消息
    string sendMessage = "我是客户端,哈哈";
    tcpClient.Send(Encoding.UTF8.GetBytes(sendMessage));
    Debug.Log("客户端发送了:"+sendMessage);
}

先打开VS中的Server,再运行Unity中的客户端,就可以实现它们之间的通信;

猜你喜欢

转载自blog.csdn.net/noEnoughChief/article/details/80613723