前幾天寫的伺服器,今天把用戶端過了一遍,把代碼分享給大家,寫了注釋,依舊是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);
}