天天看點

Unity網絡Socket用戶端搭建

前幾天寫的伺服器,今天把用戶端過了一遍,把代碼分享給大家,寫了注釋,依舊是Socket,接着上次伺服器寫的用戶端,歡迎各位童鞋留言交流學習

[code]csharpcode:

using UnityEngine;
using System.Collections;
//添加引用
using System.Net;
using System.Net.Sockets;
//這裡咱們添加System.Text是為了
//把用戶端要發送的String類型的資料轉換為byte類型
//傳送給伺服器
using System.Text;      

[code]csharpcode:下面是主要内容

public class CreateClient  {
    //同伺服器一樣寫成單例,以友善在需要建立用戶端時調用
    private static CreateClient _instance;
    private CreateClient() { }
    public static CreateClient GetInstance()
    {
        if (_instance==null)
        {
            _instance = new CreateClient();
        }
        return _instance;
    }
    //建立用戶端Socket對象
    private Socket clientSocket;
    /// <summary>
    /// 用戶端建立方法
    /// </summary>
    /// <param name="ip">伺服器IP</param>
    /// <param name="port">端口号</param>
    public void InitClient(string ip,int port)
    {        
        clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        clientSocket.Connect(new IPEndPoint(IPAddress.Parse(ip), port));
    }
    //由于我們需要發送資料,所有跟伺服器一樣
    //聲明一個byte的數組用于資料發送
    private byte[] clientbuffer = new byte[1024];
    /// <summary>
    /// 用戶端發送消息方法
    /// </summary>
    /// <param name="msg">用戶端要發送的資料,可以在外面調用這個方法發送資料</param>
    public void ClientSend(string msg)
    {
        //這裡就用到了System.Text中的轉換,一般采用UTF8的編碼
        clientbuffer = UTF8Encoding.UTF8.GetBytes(msg);
        //開始發送消息
        //參數(發送的byte[]資料,偏移量,消息長度,SocketFlags服務,回調方法,目前狀态)
        clientSocket.BeginSend(clientbuffer, 0, clientbuffer.Length, SocketFlags.None, clientAySend, clientSocket);
    }
    /// <summary>
    /// 回調方法
    /// </summary>
    private void clientAySend(System.IAsyncResult ar)
    {
        clientSocket = ar.AsyncState as Socket;
        //在回調中結束發送,傳回一個int
        //count:發送的資料的位元組數
        int count = clientSocket.EndSend(ar);      
    }      

[code]csharpcode:   然後就可以在任何地方建立用戶端來連接配接指定伺服器了,并可以發送string到伺服器了

/// <summary>
    ///建立用戶端
    /// </summary>
    void Client()
    {
        //直接調用我們自己寫的方法,傳進ip和端口号,就可以連接配接伺服器了
        //(伺服器ip,端口号)23546随便寫的端口号,但要與伺服器建立時一緻
        //127.0.0.1因為是我自己建的伺服器,直接寫了本地位址
        CreateClient.GetInstance().InitClient("127.0.0.1", 23456);

        //假設下面是我們要發送的資料
        string text = "Come from Client";
        //調用我們自己寫的發送消息方法,直接發送過去就行了
        CreateClient.GetInstance().ClientSend(text);
    }      

繼續閱讀