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);
    }

 

posted on 2016-04-11 00:28  &大飞  阅读(874)  评论(0编辑  收藏  举报

导航