using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Text; using System; using System.Net; using System.IO; public class SocketManager : MonoBehaviour { // Use this for initialization public SocketClient serverConnerction; int number = 0; string date = "{\"type\":" + 0 + "}"; void Start() { //启动连接 StartServerConnerction(); } // Update is called once per frame void Update() { HandleTasks(serverConnerction.receiveQueue); } /// /// 程序关闭前,关闭Socket连接 /// private void OnDisable() { ClosedServerConnerction(); } #region Socket双向数据 /// /// 开启双向接收数据连接 /// public void StartServerConnerction() { serverConnerction = new SocketClient("192.168.0.120", "8000"); serverConnerction.OnConnectAsync(); } public void SendData() { //serverConnerction.Send(date); } /// /// 关闭双向接收数据连接 /// public void ClosedServerConnerction() { if (serverConnerction != null) { serverConnerction.Closed(); } } #endregion /// /// 任务分发 /// /// void HandleTasks(Queue data_Queue) { if (data_Queue.Count > 0) { byte[] data = data_Queue.Dequeue(); //标志位 byte[] bufferTag = new byte[4]; int idx = 20; Array.Copy(data, idx, bufferTag, 0, bufferTag.Length); //长度 byte[] newLen = new byte[4]; int idx_1 = 10; Array.Copy(data, idx_1, newLen, 0, newLen.Length); //包体 byte[] bufferBody = new byte[int.Parse(GetString(newLen))]; int idx_2 = 32; Array.Copy(data, idx_2, bufferBody, 0, bufferBody.Length); string json = GetString(bufferBody);//减去包头的最终json数据 //string bodyJson = HttpUtility.UrlDecode(json, Encoding.UTF8); //print(bodyJson); if (GetString(bufferTag).Contains("LOGI"))//登录操作 { } } } string GetString(byte[] buffer) { return Encoding.UTF8.GetString(buffer, 0, buffer.Length); } /// /// 登录格式 /// /// /// /// public string LoginString(string user, string password) { string result = null; ; string json = "{\"account\":\"" + user + "\",\"password\":\"" + password + "\"}"; string len = ""; if (json.Length.ToString().Length < 4) { for (int i = 0; i < 4 - json.Length.ToString().Length; i++) { len += "0"; } len += json.Length.ToString(); } result = "aa00838961" + len + "00 CLTLOGI0000avcd" + json + "ff"; print("发送给服务器的帐号密码:"+result); return result; } }