服務端 --接收到消息,原樣返回服務器
using System; using System.Net; using System.Net.Sockets; namespace LuaFramework_UGUI_master_Server { class Program { static void Main(string[] args) { Socket listenfd = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress ipAdr = IPAddress.Parse("127.0.0.1"); IPEndPoint ipEp = new IPEndPoint(ipAdr, 1234); listenfd.Bind(ipEp); listenfd.Listen(0); Console.WriteLine("服務器啓動成功"); while (true) { Socket connfd = listenfd.Accept(); Console.WriteLine("服務器Accept"); byte[] readBuffer = new byte[100]; int count = connfd.Receive(readBuffer); string showStr = ""; for (int i = 0; i < count; i++) { int b = (int)readBuffer[i]; showStr += b.ToString() + " "; } Console.WriteLine("服務器接收字節流:" + showStr); //解析消息 //1.前兩個字節爲消息長度 //2.後兩個字節爲協議 //3.後面的字節爲消息內容 Int16 messageLen = BitConverter.ToInt16(readBuffer, 0); Int16 protocal = BitConverter.ToInt16(readBuffer, 2); Int16 strLen = BitConverter.ToInt16(readBuffer, 4); string str = System.Text.Encoding.ASCII.GetString(readBuffer, 6, strLen); Console.WriteLine("【服務器接收】長度:" + messageLen); Console.WriteLine("【服務器接收】協議號:" + protocal); Console.WriteLine("【服務器接收】字符串:" + str); //返回消息 byte[] writeBuffer = new byte[100]; Array.Copy(readBuffer, writeBuffer,count); connfd.Send(writeBuffer); } } } }
require "Network" --主入口函數。從這裏開始lua邏輯 function Main() --網絡鏈接 print("網絡鏈接"); local networkMgr = LuaHelper.GetNetManager(); local AppConst = LuaFramework.AppConst; AppConst.SocketPort = 1234; AppConst.SocketAddress = "127.0.0.1"; networkMgr:SendConnect(); end
Network.lua -- 接收、發送消息網絡
Network = {}; --協議 Protocal = { Connect = '101'; --鏈接服務器 Exception = '102'; --異常掉線 Disconnect = '103'; --正常斷線 Message = '104'; --接收消息 } --接收Socket消息-- function Network.OnSocket(key, data) if key == 101 then LuaFramework.Util.Log('OnSocket Connect'); Send() elseif key == 104 then LuaFramework.Util.Log('OnSocket Message'); local str = data:ReadString(); LuaFramework.Util.Log('Received String : '..str); else LuaFramework.Util.Log('OnSocket Other : '..key); end end --發送Socket消息-- function Send() --組裝數據 local buffer = LuaFramework.ByteBuffer.New(); buffer:WriteShort(Protocal.Message); buffer:WriteString("Unity3d Online Game Book"); --發送 local LuaHelper = LuaFramework.LuaHelper; local networkMgr = LuaHelper.GetNetManager(); networkMgr:SendMessage(buffer); LuaFramework.Util.Log("Data Send Complete"); end