/// <summary> /// 서버에 접속되어 있는 클라이언트 소켓이 닫히면 호출되는 함수 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void server_OnClientClose(object sender, SDKNetLib.Event.AsyncSocketConnectionEventArgs e) { try { //LogMessage("server_OnClientClose[client count:" + server.ClientList.Count + "]"); //List<IAsyncSocketClient> cList = new List<IAsyncSocketClient>(); //cList = server.ClientList; //for (int i = 0; i < cList.Count; i++) //{ // if (Config.Back.Ip == cList[i].ClientId) // { // if (cList[i].IsConnected == true) led2.Value.AsBoolean = true; // } // else if (Config.Cushtion.Ip == cList[i].ClientId) // { // if (cList[i].IsConnected == true) led1.Value.AsBoolean = true; // } //} ServerConnection = false; IAsyncSocketClient cList = e.ClientSocket; #if PROGRAM_RUNNING server.ClientList.Remove(cList); #endif } catch { MessageBox.Show("서버 통신에러 'server_OnClientClose'"); } return; }
/// <summary> /// 소켓 통신 오픈 작업을 진행한다. /// </summary> /// <returns></returns> private bool TCPOpen() { //UDP Socket Client //시스템 포트 : 0~1023 //사용자 포트 : 1024~49151 //동적 포트 : 49152~65535 //int Port; client = new AdvancedAsyncSocketClient(Encoding.UTF8.GetBytes(ETX)); client.Connect(ClientIpAddr.IP, ClientIpAddr.Port); client.OnConnect += new SDKNetLib.Event.AsyncSocketConnectEventHandler(client_OnConnect); client.OnReceive += new SDKNetLib.Event.AsyncSocketReceiveEventHandler(client_OnReceive); client.OnSend += new SDKNetLib.Event.AsyncSocketSendEventHandler(client_OnSend); client.OnClose += new SDKNetLib.Event.AsyncSocketCloseEventHandler(client_OnClose); client.OnError += new SDKNetLib.Event.AsyncSocketErrorEventHandler(client_OnError); server = new AdvancedAsyncSocketServer(ServerIpAddr.Port, Encoding.UTF8.GetBytes(ETX)); server.OnAccept += new SDKNetLib.Event.AsyncSocketAcceptEventHandler(server_OnAccept); server.OnError += new SDKNetLib.Event.AsyncSocketErrorEventHandler(server_OnError); server.OnClose += new SDKNetLib.Event.AsyncSocketCloseEventHandler(server_OnClose); server.OnClientReceive += new SDKNetLib.Event.AsyncSocketReceiveEventHandler(server_OnClientReceive); server.OnClientSend += new SDKNetLib.Event.AsyncSocketSendEventHandler(server_OnClientSend); server.OnClientClose += new SDKNetLib.Event.AsyncSocketCloseEventHandler(server_OnClientClose); server.OnClientError += new SDKNetLib.Event.AsyncSocketErrorEventHandler(server_OnClientError); server.Listen(); TCPComCheckFirst = mControl.공용함수.timeGetTimems(); TCPComCheckLast = mControl.공용함수.timeGetTimems(); return(true); }
public void Process(INetPackage package, IAsyncSocketClient client) { ResultMessage loginResult = package.NetMessage <ResultMessage>(); ClientMsg(loginResult.Ret == 0 ? "登录服务器成功!" : "登录服务器失败!"); sendBigMessage(); sendFriendsMessage(); }
public void Process(INetPackage package, IAsyncSocketClient client) { UsersMessage friendsResult = package.NetMessage <UsersMessage>(); for (var i = 0; i < friendsResult.List.Count; i++) { UserMessage info = friendsResult.List[i]; ClientMsg(info.UID.ToString() + "->" + info.NickName + "->" + info.Avatar); } }
/// <summary> /// 开始监听 /// </summary> /// <param name="e">接收数据</param> /// <param name="client">客户端</param> public static void Listener <TPackageParse>(AsyncSocketTokenEventArgs e, IAsyncSocketClient client = null) where TPackageParse : INetPackageParse, new() { try { IList <INetPackage> packages = Singleton <TPackageParse> .Instance().Parse(e, AsyncSocketClientReceive.LittleEndian, AsyncSocketClientReceive.MaxPackageSize); if (packages == null) { client.Disconnect(); if (AsyncSocketClientReceive.ErrorMsg != null) { AsyncSocketClientReceive.ErrorMsg.BeginInvoke("超出最大包大小:" + AsyncSocketClientReceive.MaxPackageSize.ToString() + ",连接被强行断开!", null, null); } } else { foreach (INetPackage package in packages) { if (package != null) { if (clientEvents.ContainsKey(package.Command)) { clientEvents[package.Command].Process(package, client); } else if (AsyncSocketClientReceive.ErrorMsg != null) { AsyncSocketClientReceive.ErrorMsg.BeginInvoke(package.Command.ToString() + "指令不存在!", null, null); } } } } } catch (Exception ex) { if (AsyncSocketClientReceive.ErrorMsg != null) { AsyncSocketClientReceive.ErrorMsg.BeginInvoke(ex.Message, null, null); } } }
public void Process(INetPackage package, IAsyncSocketClient client) { LabaMessage labaResult = package.NetMessage <LabaMessage>(); ClientMsg(labaResult.Data); }