public SampleServer() { m_Core = new ZNet.CoreServerNet(); proxy = new Rmi.Proxy(); stub = new Rmi.Stub(); m_Core.Attach(proxy, stub); stub.request_message = (ZNet.RemoteID remote, ZNet.CPackOption pkOption, RemoteClass.CUserClass testClass, Dictionary <Int32, Int32> dic_test, string msg) => { Console.WriteLine("Remote[{0}] msg : {1}", remote, msg); proxy.reponse_message(remote, ZNet.CPackOption.Basic, testClass, dic_test, msg); return(true); }; m_Core.client_join_handler = (ZNet.RemoteID remote, ZNet.NetAddress addr) => { Console.WriteLine("Client {0} is Join {1}:{2}.\n", remote, addr.m_ip, addr.m_port); }; m_Core.client_leave_handler = (ZNet.RemoteID remote) => { Console.WriteLine("Client {0} Leave.\n", remote); }; m_Core.message_handler = (ZNet.ResultInfo result) => { string str_msg = "Msg : "; str_msg += result.msg; Console.WriteLine(str_msg); }; m_Core.exception_handler = (Exception e) => { string str_msg = "Exception : "; str_msg += e.ToString(); Console.WriteLine(str_msg); }; }
public SampleServer() { m_Core = new ZNet.CoreServerNet(); proxy = new Rmi.Proxy(); stub = new Rmi.Stub(); m_Core.Attach(proxy, stub); stub.request_message = (ZNet.RemoteID remote, ZNet.CPackOption pkOption, RemoteClass.CUserClass testClass, Dictionary<Int32, Int32> dic_test, string msg) => { Console.WriteLine("Remote[{0}] msg : {1}", remote, msg); proxy.reponse_message(remote, ZNet.CPackOption.Basic, testClass, dic_test, msg); return true; }; m_Core.client_join_handler = (ZNet.RemoteID remote, ZNet.NetAddress addr) => { Console.WriteLine("Client {0} is Join {1}:{2}.\n", remote, addr.m_ip, addr.m_port); }; m_Core.client_leave_handler = (ZNet.RemoteID remote) => { Console.WriteLine("Client {0} Leave.\n", remote); }; m_Core.message_handler = (ZNet.ResultInfo result) => { string str_msg = "Msg : "; str_msg += result.msg; Console.WriteLine(str_msg); }; m_Core.exception_handler = (Exception e) => { string str_msg = "Exception : "; str_msg += e.ToString(); Console.WriteLine(str_msg); }; }
public LoginServer() { m_Core = new ZNet.CoreServerNet(); proxy = new Rmi.Proxy(); stub = new Rmi.Stub(); m_Core.Attach(proxy, stub); // 메세지 패킷 처리 샘플 stub.request_message = (ZNet.RemoteID remote, ZNet.CPackOption pkOption, string msg) => { Console.WriteLine("Remote[{0}] msg : {1}", remote, msg); proxy.reponse_message(remote, ZNet.CPackOption.Basic, msg); return true; }; // 서버이동 요청 패킷 처리 : 요청 받은 서버타입중 원활한 서버를 찾아서 수동으로 접속할 수 있게 주소를 보내준다 stub.request_move_to_server = (ZNet.RemoteID remote, ZNet.CPackOption pkOption, int server_type) => { ZNet.MasterInfo selectSvr; if (m_Core.SelectServer(server_type, out selectSvr)) { proxy.reponse_move_to_server(remote, ZNet.CPackOption.Basic, true, selectSvr.m_Addr); } else { proxy.reponse_move_to_server(remote, ZNet.CPackOption.Basic, false, new ZNet.NetAddress()); } return true; }; // 클라이언트가 이 서버에 입장된 시점 m_Core.client_join_handler = (ZNet.RemoteID remote, ZNet.NetAddress addr, ZNet.ArrByte move_server, ZNet.ArrByte move_param) => { if (move_server.Count == 0) { // 일반 입장 Console.WriteLine("Client {0} is Join {1}:{2}.\n", remote, addr.m_ip, addr.m_port); } else // 서버 이동으로 입장한 경우 { // 이동 시작한 서버에서 구성해둔 유저 데이터 버퍼를 이용해 동기화 처리한다 ZNet.CMessage msg = new ZNet.CMessage(); msg.m_array = move_server; ServerP2P_Common.UserDataSync user_data; msg.Read(out user_data.info); msg.Read(out user_data.item_id); Console.WriteLine("Client Join (move server) {0} {1}", user_data.info, user_data.item_id); } }; // 클라이언트가 이 서버에 퇴장하는 시점 m_Core.client_leave_handler = (ZNet.RemoteID remote, bool bMoveServer) => { Console.WriteLine("Client {0} Leave.\n", remote); }; // 서버 이동 시작 시점 : 완료 이벤트는 이동 성공한 서버에서 발생 m_Core.move_server_start_handler = (ZNet.RemoteID remote, out ZNet.ArrByte buffer) => { // 여기서는 이동할 서버로 동기화 시킬 유저 데이터를 구성하여 buffer에 넣어둔다 -> 완료서버에서 해당 데이터를 그대로 받게된다 ZNet.CMessage msg = new ZNet.CMessage(); ServerP2P_Common.UserDataSync user_data; user_data.info = "유저 데이터 정보, DBID=1234, 로그인서버입니다"; user_data.item_id = 12312309871234; msg.Write(user_data.info); msg.Write(user_data.item_id); buffer = msg.m_array; Console.WriteLine("move server start {0} {1}", user_data.info, user_data.item_id); }; m_Core.message_handler = (ZNet.ResultInfo result) => { string str_msg = "Msg : "; str_msg += result.msg; Console.WriteLine(str_msg); }; m_Core.exception_handler = (Exception e) => { string str_msg = "Exception : "; str_msg += e.ToString(); Console.WriteLine(str_msg); }; // server p2p관련 이벤트 m_Core.server_join_handler = (ZNet.RemoteID remote, ZNet.NetAddress addr) => { Console.WriteLine(string.Format("서버P2P맴버 입장 remoteID {0}", remote)); }; m_Core.server_leave_handler = (ZNet.RemoteID remote, ZNet.NetAddress addr) => { Console.WriteLine(string.Format("서버P2P맴버 퇴장 remoteID {0}", remote)); }; m_Core.server_master_join_handler = (ZNet.RemoteID remote, ZNet.RemoteID myRemoteID) => { Console.WriteLine(string.Format("마스터서버에 입장성공 remoteID {0}", remote)); }; m_Core.server_master_leave_handler = () => { Console.WriteLine(string.Format("마스터서버와 연결종료!!!")); }; m_Core.server_refresh_handler = (ZNet.MasterInfo master_info) => { Console.WriteLine(string.Format("서버P2P remote:{0} type:{1}[{2}] current:{3} addr:{4}:{5}", master_info.m_remote, (ServerP2P_Common.Server)master_info.m_ServerType, master_info.m_Description, master_info.m_Clients, master_info.m_Addr.m_ip, master_info.m_Addr.m_port )); }; }
public SampleServer() { m_Core = new ZNet.CoreServerNet(); proxy = new Rmi.Proxy(); stub = new Rmi.Stub(); m_Core.Attach(proxy, stub); stub.request_message = (ZNet.RemoteID remote, ZNet.CPackOption pkOption, RemoteClass.CUserClass testClass, Dictionary<Int32, Int32> dic_test, string msg) => { Console.WriteLine("Remote[{0}] msg : {1}", remote, msg); proxy.reponse_message(remote, ZNet.CPackOption.Basic, testClass, dic_test, msg); return true; }; m_Core.client_join_handler = (ZNet.RemoteID remote, ZNet.NetAddress addr, ZNet.ArrByte move_server, ZNet.ArrByte move_param) => { Console.WriteLine("Client {0} is Join {1}:{2}.\n", remote, addr.m_ip, addr.m_port); }; m_Core.client_leave_handler = (ZNet.RemoteID remote, bool bMoveServer) => { Console.WriteLine("Client {0} Leave.\n", remote); }; // 주기적으로 처리할 내용 : m_UpdateTimeMs 에서 설정한 시간마다 콜백됩니다 m_Core.update_event_handler = () => { Console.WriteLine("Server Update Event\n"); }; m_Core.message_handler = (ZNet.ResultInfo result) => { string str_msg = "Msg : "; str_msg += result.msg; Console.WriteLine(str_msg); }; m_Core.exception_handler = (Exception e) => { string str_msg = "Exception : "; str_msg += e.ToString(); Console.WriteLine(str_msg); }; // 연결복구 관련 이벤트 m_Core.recovery_info_handler = (ZNet.RemoteID remoteNew, ZNet.RemoteID remoteTo) => { Console.WriteLine("Recovery try... new connection Client[{0}] to Client[{1}].\n", remoteNew, remoteTo); }; m_Core.recovery_start_handler = (ZNet.RemoteID remote) => { Console.WriteLine("Recovery Start Client {0}.\n", remote); }; m_Core.recovery_end_handler = (ZNet.RemoteID remote, ZNet.NetAddress addrNew, bool bTimeOut) => { if (bTimeOut) Console.WriteLine("Recovery TimeOUT Client {0}.\n", remote); else Console.WriteLine("Recovery Complete Client {0}. NewAddr[{1}:{2}]\n", remote, addrNew.m_ip, addrNew.m_port); }; // 서버 접속제한시점의 이벤트 m_Core.limit_connection_handler = (ZNet.RemoteID remote, ZNet.NetAddress addr) => { Console.WriteLine("Client {0}, {1} is Leave.\n", remote, addr.m_ip, addr.m_port); }; }
public SampleServer() { m_Core = new ZNet.CoreServerNet(); proxy = new Rmi.Proxy(); stub = new Rmi.Stub(); m_Core.Attach(proxy, stub); stub.request_message = (ZNet.RemoteID remote, ZNet.CPackOption pkOption, RemoteClass.CUserClass testClass, Dictionary <Int32, Int32> dic_test, string msg) => { Console.WriteLine("Remote[{0}] msg : {1}", remote, msg); proxy.reponse_message(remote, ZNet.CPackOption.Basic, testClass, dic_test, msg); return(true); }; m_Core.client_join_handler = (ZNet.RemoteID remote, ZNet.NetAddress addr, ZNet.ArrByte move_server, ZNet.ArrByte move_param) => { Console.WriteLine("Client {0} is Join {1}:{2}.\n", remote, addr.m_ip, addr.m_port); }; m_Core.client_leave_handler = (ZNet.RemoteID remote, bool bMoveServer) => { Console.WriteLine("Client {0} Leave.\n", remote); }; // 주기적으로 처리할 내용 : m_UpdateTimeMs 에서 설정한 시간마다 콜백됩니다 m_Core.update_event_handler = () => { Console.WriteLine("Server Update Event\n"); }; m_Core.message_handler = (ZNet.ResultInfo result) => { string str_msg = "Msg : "; str_msg += result.msg; Console.WriteLine(str_msg); }; m_Core.exception_handler = (Exception e) => { string str_msg = "Exception : "; str_msg += e.ToString(); Console.WriteLine(str_msg); }; // 연결복구 관련 이벤트 m_Core.recovery_info_handler = (ZNet.RemoteID remoteNew, ZNet.RemoteID remoteTo) => { Console.WriteLine("Recovery try... new connection Client[{0}] to Client[{1}].\n", remoteNew, remoteTo); }; m_Core.recovery_start_handler = (ZNet.RemoteID remote) => { Console.WriteLine("Recovery Start Client {0}.\n", remote); }; m_Core.recovery_end_handler = (ZNet.RemoteID remote, ZNet.NetAddress addrNew, bool bTimeOut) => { if (bTimeOut) { Console.WriteLine("Recovery TimeOUT Client {0}.\n", remote); } else { Console.WriteLine("Recovery Complete Client {0}. NewAddr[{1}:{2}]\n", remote, addrNew.m_ip, addrNew.m_port); } }; // 서버 접속제한시점의 이벤트 m_Core.limit_connection_handler = (ZNet.RemoteID remote, ZNet.NetAddress addr) => { Console.WriteLine("Client {0}, {1} is Leave.\n", remote, addr.m_ip, addr.m_port); }; }