Unity简单搭建小服务器和客户端-----------服务器部分

本文档介绍了如何在Unity中创建简单的服务器和客户端项目。分为SeverTest01(服务器部分)和SocketTest01(客户端部分),主要实现两端的连接及消息交互。重点提及了端口选择,强调服务器和客户端必须使用相同的非周知端口,如10086,以确保连接成功。此外,还提供了项目代码示例和下载链接。
摘要由CSDN通过智能技术生成

分为两个Unity项目

一个是SeverTest01 用于Unity的服务器部分
一个是SocketTest01 用于Unity的客户端部分
关于客户端部分的
初步学习只有简单的服务器和客户端连接,并且发送消息回复,算是一个学习记录

关于端口

0-65535其中0-1023叫做周知端口我们不能使用,这里使用的是10086端口,服务器端和客户端端口要一致才能连接得上
0-1023叫做周知端口
动态端口的范围是从49152到65535
注册端口端口1024到49151

代码展示
SeverTest01 部分 新建场景001 将Server挂到Camera上即可
在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System;
/// <summary>
/// 可以供客户端和服务器一块使用
/// </summary>
public class TcpSocket
{
   
    //当前实例化的socket
    private Socket socket;
    //socket上的数据
    private byte[] data;
    //区分服务器  还是客户端
    private bool isServer;

    public TcpSocket(Socket socket, int dataLength, bool isServer)
    {
   
        this.socket = socket;

        data = new byte[dataLength];

        this.isServer = isServer;

    }

    #region 接受
    public void ClientReceive()
    {
   
        //data 数据缓存 0:指的是 接受位的偏移量   data.length指的是数据的长度   SocketFlags.None固定格式 
        //new AsyncCallback(ClientEndReceive)需要有返回值的回调函数,返回值是下面的方法
        //public IAsyncResult BeginReceive(byte[] buffer, int offset, int size, SocketFlags socketFlags, AsyncCallback callback, object state);

        socket.BeginReceive(data, 0, data.Length, SocketFlags.None, new AsyncCallback(ClientEndReceive), null);
    }


    public void ClientEndReceive(IAsyncResult ar)
    {
   
        //数据的处理
        int receiveLength = socket.EndReceive(ar);    //将接受到的数据赋值给receiveLength
        //把接受完毕的字节数组转化为 string类型
        string dataStr = System.Text.Encoding.UTF8.GetString(data, 0, receiveLength);

        if (isServer)    //判断是否接收到了因为开始设定了isServer是布尔值
        {
   
            Debug.Log("服务器接受到了:" + dataStr
好的,我会尽力回答你的问题。如果我理解正确的话,你想了解如何搭建一个使用Netty作为游戏服务器Unity客户端。以下是一些大致的步骤: 1. 首先,你需要创建一个Unity项目并设置其为2D或3D游戏项目,具体取决于你的游戏类型。在Unity中,你可以使用C#编写客户端代码。 2. 在Unity中,你需要使用Socket类或TcpClient类等网络库来与Netty服务器进行通信。你需要在客户端上实现一个类似于Socket或TcpClient的类来进行网络通信。 3. 与服务器建立连接。在Unity中,你可以使用类似于下面的代码来建立连接。 ``` TcpClient client = new TcpClient(); client.Connect("127.0.0.1", 8888); ``` 4. 在客户端上实现收发消息的方法。你可以通过使用NetworkStream类来发送和接收消息。你需要在客户端上实现类似于下面的代码来发送消息。 ``` NetworkStream stream = client.GetStream(); byte[] data = Encoding.UTF8.GetBytes(message); stream.Write(data, 0, data.Length); ``` 5. 在客户端上解析从服务器返回的数据。你可以使用类似于下面的代码来解析从服务器返回的数据。 ``` byte[] buffer = new byte[1024]; int bytes = stream.Read(buffer, 0, buffer.Length); string data = Encoding.UTF8.GetString(buffer, 0, bytes); ``` 6. 在Unity中实现游戏逻辑。你需要在客户端上实现游戏逻辑以响应从服务器收到的数据。例如,你可以在客户端上实现一个类似于下面的代码来处理从服务器接收到的游戏数据。 ``` void HandleGameMessage(string message) { // 解析收到的消息 // 处理游戏逻辑 } ``` 希望这些步骤可以帮助你开始使用Netty作为游戏服务器Unity客户端。当然,具体的实现还需要根据你的游戏类型和需求进行调整。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值