コード例 #1
0
 public DataReceivedArgs(EnumNetworkType type, IPEndPoint localEP, IPEndPoint remoteEP, TPackage package)
 {
     NetProtocolType = type;
     LocalEP         = localEP;
     RemoteEP        = remoteEP;
     Package         = package;
 }
コード例 #2
0
        private void parseSignal(ParseTypes.Network si, ParseTypes.BasicInfo basicInfo, ParseTypes.Operator op, ParseTypes.Status sta, ParseTypes.Traffic tra)
        {
            EnumNetworkType type = (EnumNetworkType)System.Enum.Parse(typeof(EnumNetworkType), basicInfo.workmode.Replace(" ", "_"));

            chLabel(label22, getTypeNet(int.Parse(sta.CurrentNetworkTypeEx)));

            int a = 0;

            int.TryParse(sta.SignalIcon, out a);
            signalStrength1.Strength = a;

            chLabel(label25, op.FullName);

            chLabel(label33, op.FullName);
            chLabel(label36, op.ShortName);

            chLabel(label39, calcM(tra.CurrentUploadRate) + "/sec");
            chLabel(label40, calcM(tra.CurrentDownloadRate) + "/sec");

            chLabel(toolStripStatusLabel2, getConnStatus(int.Parse(sta.ConnectionStatus)));

            chLabel(label3, si.cell_id.ToString());
            chLabel(label5, si.rsrq);
            chLabel(label6, si.rsrp);
            chLabel(label9, si.rssi);
            chLabel(label11, si.sinr);
            chLabel(label24, si.rscp);

            try
            {
                TimeSpan t = TimeSpan.FromSeconds(int.Parse(tra.CurrentConnectTime));

                string answer = string.Format("{0:D2}h {1:D2}m {2:D2}s",
                                              t.Hours,
                                              t.Minutes,
                                              t.Seconds,
                                              t.Milliseconds);

                chLabel(label45, answer);
            } catch { }

            chLabel(label41, calcM(tra.CurrentDownload));
            chLabel(label43, calcM(tra.CurrentUpload));

            chLabel(label18, basicInfo.DeviceName);
            chLabel(label19, basicInfo.Imei);
            chLabel(label20, basicInfo.SerialNumber);
            chLabel(label14, basicInfo.HardwareVersion);
            chLabel(label12, basicInfo.SoftwareVersion);

            chLabel(label28, sta.WanIPAddress);
            chLabel(label29, basicInfo.MacAddress1);
        }
コード例 #3
0
        /// <summary>
        /// 通常用于构建TCP服务端的客户端
        /// </summary>
        /// <param name="socket"></param>
        /// <param name="type"></param>
        /// <param name="dataBufferSize"></param>
        /// <param name="socketRecvBufferSize"></param>
        /// <param name="socketSendBufferSize"></param>
        public AbsSocketNetBase(Socket socket, EnumNetworkType type, int dataBufferSize, int socketRecvBufferSize, int socketSendBufferSize)
            : this(type, dataBufferSize, socketRecvBufferSize, socketSendBufferSize)
        {
            m_localEndPoint  = (IPEndPoint)socket.LocalEndPoint;
            m_remoteEndPoint = (IPEndPoint)socket.RemoteEndPoint;

            m_socket = socket;
            m_socket.ReceiveBufferSize = socketRecvBufferSize;
            m_socket.SendBufferSize    = socketSendBufferSize;
            m_socket.NoDelay           = true;
            Interlocked.Exchange(ref m_socketStatus, (int)EnumNetworkStatus.Established);
        }
コード例 #4
0
        public override void DecodeParse(EnumNetworkType netType, byte[] data, int offset, int length, IPEndPoint remoteEP, IPEndPoint localEP)
        {
            //1.这里实现自定义数据解码,如TCP的粘包处理
            //....
            //....代码省略
            //....
            //解析一包完成后记得发布事件,类似如下
            var packA = new ProtocolPackageAAAAA()
            {
                Name = "我是收到的AAAAA数据",
            };

            base.PublishData(netType, remoteEP, localEP, packA);
        }
コード例 #5
0
        private void Init(EnumNetworkType type, int dataBufferSize, int socketRecvBufferSize, int socketSendBufferSize)
        {
            m_socketStatus         = (int)EnumNetworkStatus.Undefined;
            m_netProtocolType      = type;
            m_dataBufferSize       = dataBufferSize;
            m_socketRecvBufferSize = socketRecvBufferSize;
            m_socketSendBufferSize = socketSendBufferSize;
            m_dataBuffer           = new byte[m_dataBufferSize];

            m_recvEventArgs = new SocketAsyncEventArgs();
            //m_recvEventArgs.RemoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
            //m_recvEventArgs.UserToken = this;
            if (m_netProtocolType == EnumNetworkType.UDP ||
                m_netProtocolType == EnumNetworkType.Multicast)
            {
                //TCP启动接收为ReceiveAsync
                //UDP启动接收为ReceiveFromAsync,此处必须对RemoteEndPoint赋值,这样接收时才能获取是谁发来的
                m_recvEventArgs.RemoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
            }
            m_recvEventArgs.SetBuffer(m_dataBuffer, 0, m_dataBuffer.Length);//设置接收缓冲区
            m_recvEventArgs.Completed += new EventHandler <SocketAsyncEventArgs>(OnReceiveIOCompleted);
        }
コード例 #6
0
 /// <summary>
 /// 自定义解码,协议解析完成后需调用PublishData()函数发布事件给应用层
 /// </summary>
 /// <param name="netType"></param>
 /// <param name="data">接受缓冲区</param>
 /// <param name="offset">目标数据偏移</param>
 /// <param name="length">目标数据长度</param>
 /// <param name="remoteEP">数据来源地址</param>
 /// <param name="localEP">本地绑定地址</param>
 public abstract void DecodeParse(EnumNetworkType netType, byte[] data, int offset, int length, IPEndPoint remoteEP, IPEndPoint localEP);
コード例 #7
0
 /// <summary>
 /// 发布收数事件
 /// </summary>
 /// <param name="netType"></param>
 /// <param name="remoteEP"></param>
 /// <param name="localEP"></param>
 /// <param name="pack"></param>
 protected void PublishData(EnumNetworkType netType, IPEndPoint remoteEP, IPEndPoint localEP, TPackage pack)
 {
     PublishData(new DataReceivedArgs <TPackage>(netType, localEP, remoteEP, pack));
 }
コード例 #8
0
 /// <summary>
 /// 创建TCP/UDP客户端,自定义收发缓冲区大小
 /// </summary>
 /// <typeparam name="TBuilder">协议解包自定义实现</typeparam>
 /// <typeparam name="TPackage">自定义用户层数据包</typeparam>
 /// <param name="type">TCP或者UDP</param>
 /// <param name="dataRecvSize">数据接收缓冲区大小</param>
 /// <param name="socketRecvSize">Socket接收缓冲区大小</param>
 /// <param name="socketSendSize">Socket发送缓冲区大小</param>
 /// <returns></returns>
 public static ISocketNetClient <TPackage> CreateSocketNetClient <TBuilder, TPackage>(EnumNetworkType type,
                                                                                      int dataRecvSize,
                                                                                      int socketRecvSize,
                                                                                      int socketSendSize) where TBuilder : AbsProtocolBuilder <TPackage>, new()
 {
     return(new SocketNetClient <TBuilder, TPackage>(type, dataRecvSize, socketRecvSize, socketSendSize));
 }
コード例 #9
0
 /// <summary>
 /// 通知子类收到数据
 /// </summary>
 /// <param name="type"></param>
 /// <param name="data"></param>
 /// <param name="offset"></param>
 /// <param name="length"></param>
 /// <param name="remoteEP"></param>
 protected abstract void SocketDataReceived(EnumNetworkType type, byte[] data, int offset, int length, IPEndPoint remoteEP);
コード例 #10
0
 /// <summary>
 /// TCP/UDP主动创建
 /// </summary>
 /// <param name="localEP">默认本机地址,可为null,启动时再给定</param>
 /// <param name="remoteEP">默认远端地址,可为null,启动时再给定</param>
 /// <param name="type"></param>
 /// <param name="dataBufferSize"></param>
 /// <param name="socketRecvBufferSize"></param>
 /// <param name="socketSendBufferSize"></param>
 public AbsSocketNetBase(IPEndPoint localEP, IPEndPoint remoteEP, EnumNetworkType type, int dataBufferSize, int socketRecvBufferSize, int socketSendBufferSize)
     : this(type, dataBufferSize, socketRecvBufferSize, socketSendBufferSize)
 {
     m_localEndPoint  = localEP;
     m_remoteEndPoint = remoteEP;
 }
コード例 #11
0
 /// <summary>
 /// TCP创建 或 UDP创建
 /// </summary>
 /// <param name="type">TCP\UDP</param>
 /// <param name="dataBufferSize">异步套接字数据缓冲大小(用户数据区)</param>
 /// <param name="socketRecvBufferSize">socket接收缓冲大小</param>
 /// <param name="socketSendBufferSize">socket发送缓冲大小</param>
 public AbsSocketNetBase(EnumNetworkType type, int dataBufferSize, int socketRecvBufferSize, int socketSendBufferSize)
 {
     Init(type, dataBufferSize, socketRecvBufferSize, socketSendBufferSize);
 }
コード例 #12
0
 protected override void SocketDataReceived(EnumNetworkType type, byte[] data, int offset, int length, IPEndPoint remoteEP)
 {
     m_protocolBuilder.DecodeParse(type, data, offset, length, remoteEP, LocalEndPoint);
 }
コード例 #13
0
 /// <summary>
 /// 用于TCP服务端的客户端
 /// </summary>
 /// <param name="socket"></param>
 /// <param name="type"></param>
 /// <param name="dataRecvSize"></param>
 /// <param name="socketRecvSize"></param>
 /// <param name="socketSendSize"></param>
 public SocketNetClient(Socket socket, EnumNetworkType type, int dataRecvSize, int socketRecvSize, int socketSendSize)
     : base(socket, type, dataRecvSize, socketRecvSize, socketSendSize)
 {
     m_protocolBuilder        = new TBuilder();
     m_protocolBuilder.Socket = this;
 }