/* @ url : SyncMovement * @ request : * posX * posY * opponentUid * @ response : * opponentPosX * opponentPosY */ StructRequest SyncMovement(StructRequest request) { string user_id = request.uid; // 유저가 없을 때 if (!mUserData.ContainsKey(user_id)) { return(ServerNet.ErrorStructRequest()); } StructUserData user_data = mUserData[user_id]; // 파라매터가 오지 않았을 경우 if (request.parameter == null) { return(ServerNet.ErrorStructRequest()); } // 유저 위치 기록 if (request.parameter.ContainsKey("posX")) { user_data.posX = request.parameter["posX"]; } if (request.parameter.ContainsKey("posY")) { user_data.posY = request.parameter["posY"]; } if (request.parameter.ContainsKey("opponentUid")) { user_data.opponentUid = request.parameter["opponentUid"]; } mUserData[user_id] = user_data; // 상대방 정보 if (!request.parameter.ContainsKey("opponentUid")) { return(ServerNet.ErrorStructRequest()); } string opponentUid = request.parameter["opponentUid"]; // 상대방 정보 없을 경우 if (!mUserData.ContainsKey(opponentUid)) { return(ServerNet.ErrorStructRequest()); } StructUserData opponent_data = mUserData[opponentUid]; // 상대방 위치를 response로 전달 Dictionary <string, string> dic_param = new Dictionary <string, string>(); dic_param["opponentPosX"] = opponent_data.posX == null ? "0" : opponent_data.posX; dic_param["opponentPosY"] = opponent_data.posY == null ? "0" : opponent_data.posY; return(MakeResponse(request, dic_param)); }
/// <summary> /// 接收消息 /// </summary> /// <param name="clientSocket"></param> private static void ReceiveMessage(object _data) { DP_Msg data = (DP_Msg)_data; while (!data.m_bError) { Thread.Sleep(10); //lock (data.m_Lock) { Queue <WfPacket> local_RecvQueue = data.m_RecvQueue; Queue <WfPacket> local_SendQueue = data.m_SendQueue; object local_Lock = data.m_Lock; PacketHandlerMgr local_PacketHandlerMgr = data.m_PacketHandlerMgr; Socket myClientSocket = data.clientSocket; string text = null; bool flag = false; byte[] array = new byte[WfPacket.GetHeaderLength()]; byte[] array2 = null; int num = 0; do { text = ServerNet.RecvAll(data, ref array, ref array2, ref num, ref flag); if (num != 0) { data.m_LastConnTime = Environment.TickCount; } }while (text == null && !flag); } } Log.print("线程{0}ReceiveMessage结束。", data.clientSocket.RemoteEndPoint.ToString()); }
public void ProcessPacket(ClientSession socket, WfPacket packet) { ushort msgType = 0; ushort msgLength = 0; packet.ReadHeader(ref msgType, ref msgLength); if (ServerNet.GetEnableDebug()) { Debug.Log("receive:" + Convert.ToString(msgType, 16)); } System.Action <ClientSession, WfPacket> packetHandler = (System.Action <ClientSession, WfPacket>)m_KCPPacketHandlers[(ushort)msgType]; if (packetHandler == null) { Debug.Log("msg not process=" + msgType.ToString()); } else { try { packetHandler(socket, packet); } catch (Exception ex) { Debug.LogException(ex); } } }
static void Main(string[] args) { ServerNet serverNet = new ServerNet(); serverNet.protocol = new ProtocolBytes(); serverNet.Start(IP, PORT); Console.ReadKey(); }
public void Start() { if (m_UseTcp) { ServerNet.SetEnableDebug(false); ServerNet.Init(); } else { KCPNet.Init(); } }
//连接类(信息回馈) public void RoomNum(ProtocolBase protoBase) { ProtocolBytes proto = (ProtocolBytes)protoBase; int start = 0; string protoName = proto.GetString(start, ref start); int num = proto.GetInt(start, ref start); Client.instance.roomnum = num; if (num == 2 || ServerNet.IsUse()) { SceneManager.instance.StartScene(); } }
public static void SendMsg(DP_Msg socket) { SC_PreBattle sendPak = new SC_PreBattle(); sendPak.datas = new List <t_PreparePlayerData>(); for (uint i = 0; i < 3; ++i) { t_PreparePlayerData data = new t_PreparePlayerData(); data.m_jobid = i; data.m_playerid = i; data.m_name = "Player" + i; sendPak.datas.Add(data); } WfPacket sendPak2 = new WfPacket((ushort)emPacket_Battle.em_SC_PreBattle); sendPak.Serialize(sendPak2); ServerNet.SendPacket(socket, sendPak2); UnityEngine.Debug.Log("向客户端发送消息,SC_PreBattle"); }
public void ProcessPacket(DP_Msg socket, WfPacket packet) { ushort msgType = 0; ushort msgLength = 0; packet.ReadHeader(ref msgType, ref msgLength); if (ServerNet.GetEnableDebug()) { Debug.Log("receiving:" + msgType); } System.Action <DP_Msg, WfPacket> handler = null; if (!m_PacketHandlers.TryGetValue(msgType, out handler)) { try { handler(socket, packet); } catch (Exception ex) { Log.print(ex.Message); } } }
/* @ url : GetOpponentData * @ request : * @ response : * opponentUid */ StructRequest GetOpponentData(StructRequest request) { string user_uid = request.uid; string opponent_uid = ErrorCode.Error.ToString(); if (user_uid == "1") { opponent_uid = "0"; } else { opponent_uid = "1"; } if (mUserData.ContainsKey(opponent_uid)) { StructUserData opponent_data = mUserData[opponent_uid]; Dictionary <string, string> dic_param = new Dictionary <string, string>(); dic_param["opponentUid"] = opponent_data.uid; return(MakeResponse(request, dic_param)); } return(ServerNet.ErrorStructRequest()); }
static void Main(string[] args) { Console.WriteLine("Hello World!"); ServerNet server = new ServerNet(); }
public bool Connect() { string host = "119.23.52.136"; // Debug if (ServerNet.IsUse()) { host = "127.0.0.1"; } int port = 9970; try { socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); UDPsocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); Host = host; //ip = new IPEndPoint(IPAddress.Any, port - 2); //ip = new IPEndPoint(IPAddress.Any, port); //socket.Connect(host, port); IsConnect = false; TimeoutObjct.Reset(); socket.BeginConnect(host, port, ConnectCb, socket); if (TimeoutObjct.WaitOne(timeoutMSec, false)) { if (IsConnect) { } else { //Debug.Log(1); Close(); return(false); } } else { Close(); return(false); } //Debug.Log(((IPEndPoint)socket.LocalEndPoint).Port); ip = new IPEndPoint(IPAddress.Any, ((IPEndPoint)socket.LocalEndPoint).Port); UDPsocket.Bind(ip); isUse = true; ipAdress = host; socket.BeginReceive(readBuff, buffCount, BUFFER_SIZE - buffCount, SocketFlags.None, ReceiveCb, readBuff); UDPsocket.BeginReceive(UDPreadBuff, 0, BUFFER_SIZE, SocketFlags.None, UDPReceiveCb, UDPreadBuff); return(true); } catch (Exception e) { Debug.Log(isUse); Debug.Log(e.Message); return(false); } }
public ServerNet() { instance = this; }
static void Main(string[] args) { Console.WriteLine("Server Wake Up"); ServerNet server = new ServerNet(); }
void Set() { server.RemoveItself(); server = new ServerNet(url, type, types); }