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); }
浙公网安备 33010602011771号