/// <summary> /// 服务器写入通讯数据 /// </summary> /// <param name="client">客户端连接</param> /// <param name="server">服务器</param> private void writeData(ClientInfo clientinfo, ServerBase server) { if (null == clientinfo || null == server) { return; } Socket client = clientinfo.Client; List <byte[]> responseList = clientinfo.BufferResponse; while (true) { //心跳超时关闭退出 if (DateTime.Now - clientinfo.OPdt > server.TimeDisconn) { this.closeClientInfo(clientinfo, server); DisconnEventArgs args = new DisconnEventArgs(client, server); this.raiseEvent(args); return; } for (int i = 0; i < 80; i++) { if (responseList.Count > 0) { break; } Thread.Sleep(5); } if (responseList.Count < 1) { continue; } //同步事件触发发送响应数据 clientinfo.OPdt = DateTime.Now; Monitor.Enter(clientinfo); byte[][] responseArray = responseList.ToArray(); responseList.Clear(); Monitor.PulseAll(clientinfo); Monitor.Exit(clientinfo); try { for (int i = 0; i < responseArray.Length; i++) { client.Send(responseArray[i]); ResponseSrvEventArgs argresp = new ResponseSrvEventArgs(client, server, responseArray[i]); this.raiseEvent(argresp); } } catch (Exception ex) { this.closeClientInfo(clientinfo, server); DisconnEventArgs args = new DisconnEventArgs(client, server, ex); this.raiseEvent(args); return; } clientinfo.OPdt = DateTime.Now; } }
/// <summary> /// ������д��ͨѶ���� /// </summary> /// <param name="client">�ͻ�������</param> /// <param name="server">������</param> private void writeData(ClientInfo clientinfo, ServerBase server) { if (null == clientinfo || null == server) return; Socket client = clientinfo.Client; List<byte[]> responseList = clientinfo.BufferResponse; while (true) { //������ʱ�ر��˳� if (DateTime.Now - clientinfo.OPdt > server.TimeDisconn) { this.closeClientInfo(clientinfo, server); DisconnEventArgs args = new DisconnEventArgs(client, server); this.raiseEvent(args); return; } for (int i = 0; i < 80; i++) { if (responseList.Count > 0) break; Thread.Sleep(5); } if (responseList.Count < 1) continue; //ͬ���¼�����������Ӧ���� clientinfo.OPdt = DateTime.Now; Monitor.Enter(clientinfo); byte[][] responseArray = responseList.ToArray(); responseList.Clear(); Monitor.PulseAll(clientinfo); Monitor.Exit(clientinfo); try { for (int i = 0; i < responseArray.Length; i++) { client.Send(responseArray[i]); ResponseSrvEventArgs argresp = new ResponseSrvEventArgs(client, server, responseArray[i]); this.raiseEvent(argresp); } } catch (Exception ex) { this.closeClientInfo(clientinfo, server); DisconnEventArgs args = new DisconnEventArgs(client, server, ex); this.raiseEvent(args); return; } clientinfo.OPdt = DateTime.Now; } }
/// <summary> /// 服务器写入通讯数据 /// </summary> /// <param name="client">客户端连接</param> /// <param name="server">服务器</param> private void writeData(ClientInfo clientinfo, ServerBase server) { if (null == clientinfo || null == server) { return; } Socket client = clientinfo.Client; List <byte[]> responseList = clientinfo.BufferResponse; while (true) { //心跳超时关闭退出 if (DateTime.Now - clientinfo.OPdt > server.TimeDisconn) { server.Close(clientinfo); //string msgex = "心跳超时退出,剩余连接数:" + Convert.ToString(server.ClientList.Count); //ExceptionManager.Publish(new Exception(msgex)); DisconnEventArgs args = new DisconnEventArgs(client, server); this.raiseEvent(args); return; } for (int i = 0; i < 80; i++) { if (responseList.Count > 0) { break; } Thread.Sleep(5); } if (responseList.Count < 1) { continue; } //同步事件触发发送响应数据 clientinfo.OPdt = DateTime.Now; Monitor.Enter(clientinfo); byte[][] responseArray = responseList.ToArray(); responseList.Clear(); Monitor.PulseAll(clientinfo); Monitor.Exit(clientinfo); try { for (int i = 0; i < responseArray.Length; i++) { client.Send(responseArray[i]); Debug.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff") + " S发送:" + CommandBase.Parse(responseArray[i])); myLog.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff") + " S发送:" + CommandBase.Parse(responseArray[i])); ResponseSrvEventArgs argresp = new ResponseSrvEventArgs(client, server, responseArray[i]); this.raiseEvent(argresp); } } catch (Exception ex) { server.Close(clientinfo); //NameValueCollection attr = new NameValueCollection(); //attr["剩余连接数"] = Convert.ToString(server.ClientList.Count); //ExceptionManager.Publish(ex, attr); DisconnEventArgs args = new DisconnEventArgs(client, server, ex); this.raiseEvent(args); return; } clientinfo.OPdt = DateTime.Now; } }
/// <summary> /// 服务器写入通讯数据 /// </summary> /// <param name="client">客户端连接</param> /// <param name="server">服务器</param> private void writeData(ClientInfo clientinfo, ServerBase server) { if (null == clientinfo || null == server) return; Socket client = clientinfo.Client; List<byte[]> responseList = clientinfo.BufferResponse; while (true) { //心跳超时关闭退出 if (DateTime.Now - clientinfo.OPdt > server.TimeDisconn) { server.Close(clientinfo); //string msgex = "心跳超时退出,剩余连接数:" + Convert.ToString(server.ClientList.Count); //ExceptionManager.Publish(new Exception(msgex)); DisconnEventArgs args = new DisconnEventArgs(client, server); this.raiseEvent(args); return; } for (int i = 0; i < 80; i++) { if (responseList.Count > 0) break; Thread.Sleep(5); } if (responseList.Count < 1) continue; //同步事件触发发送响应数据 clientinfo.OPdt = DateTime.Now; Monitor.Enter(clientinfo); byte[][] responseArray = responseList.ToArray(); responseList.Clear(); Monitor.PulseAll(clientinfo); Monitor.Exit(clientinfo); try { for (int i = 0; i < responseArray.Length; i++) { client.Send(responseArray[i]); Debug.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff") + " S发送:" + CommandBase.Parse(responseArray[i])); myLog.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff") + " S发送:" + CommandBase.Parse(responseArray[i])); ResponseSrvEventArgs argresp = new ResponseSrvEventArgs(client, server, responseArray[i]); this.raiseEvent(argresp); } } catch (Exception ex) { server.Close(clientinfo); //NameValueCollection attr = new NameValueCollection(); //attr["剩余连接数"] = Convert.ToString(server.ClientList.Count); //ExceptionManager.Publish(ex, attr); DisconnEventArgs args = new DisconnEventArgs(client, server, ex); this.raiseEvent(args); return; } clientinfo.OPdt = DateTime.Now; } }