Example #1
0
 /// <summary>
 /// 构造方法
 /// </summary>
 /// <param name="t_IP"></param>
 /// <param name="t_Port"></param>
 /// <param name="t_AddressFamily"></param>
 /// <param name="t_INetworkPacketQueue"></param>
 public UDPClient(string t_IP, int t_Port, INetworkPacketQueue t_INetworkPacketQueue = null, AddressFamily t_AddressFamily = AddressFamily.InterNetwork)
 {
     IP                  = t_IP;
     Port                = t_Port;
     m_AddressFamily     = t_AddressFamily;
     INetworkPacketQueue = t_INetworkPacketQueue ?? new DefaultNetworkPacketQueue();
 }
Example #2
0
 /// <summary>
 /// 构造方法
 /// </summary>
 /// <param name="t_IP"></param>
 /// <param name="t_Port"></param>
 /// <param name="t_AddressFamily"></param>
 /// <param name="t_INetworkPacketQueue"></param>
 public UDPServer(string t_IP, int t_Port, INetworkPacketQueue t_INetworkPacketQueue = null, AddressFamily t_AddressFamily = AddressFamily.InterNetwork)
 {
     IP                  = t_IP;
     Port                = t_Port;
     m_AddressFamily     = t_AddressFamily;
     INetworkPacketQueue = t_INetworkPacketQueue ?? new DefaultNetworkPacketQueue();
     ClientEndPointList  = new List <EndPoint>();
 }
Example #3
0
 /// <summary>
 /// 读数据
 /// </summary>
 /// <param name="t_Socket"></param>
 /// <param name="t_EndPoint"></param>
 /// <param name="t_Buffer"></param>
 /// <param name="t_Length"></param>
 public void Read(Socket t_Socket, EndPoint t_EndPoint, byte[] t_Buffer, int t_Length)
 {
     INetworkPacketQueue.EnNetworkQueue(new NetworkEventArgs()
     {
         NetworkState = NetworkStateType.Transparent, Packet = new NetworkPacket()
         {
             Buffer = t_Buffer, Length = t_Length, INetwork = this, EndPoint = t_EndPoint
         }
     });
 }
Example #4
0
 /// <summary>
 /// 关闭网络
 /// </summary>
 public void Stop()
 {
     INetworkPacketQueue.EnNetworkQueue(new NetworkEventArgs()
     {
         NetworkState = NetworkStateType.Stop, Packet = new NetworkPacket()
         {
             INetwork = this
         }
     });                                                                                                                                                    //消息队列
     Socket.Close();
     IsActive = false;
 }
Example #5
0
 /// <summary>
 /// 重启网络
 /// </summary>
 public void ReStart()
 {
     INetworkPacketQueue.EnNetworkQueue(new NetworkEventArgs()
     {
         NetworkState = NetworkStateType.ReStart, Packet = new NetworkPacket()
         {
             INetwork = this
         }
     });                                                                                                                                                       //消息队列
     Stop();
     Start();
 }
Example #6
0
 /// <summary>
 /// 启动网络
 /// </summary>
 public void Start()
 {
     Socket = new Socket(m_AddressFamily, SocketType.Dgram, ProtocolType.Udp);
     Socket.Bind(new IPEndPoint(IPAddress.Parse(IP), Port)); //绑定端口
     INetworkPacketQueue.EnNetworkQueue(new NetworkEventArgs()
     {
         NetworkState = NetworkStateType.Start, Packet = new NetworkPacket()
         {
             INetwork = this
         }
     });                                                                                                                                                    //消息队列
     AsycReveiveFrom();
     IsActive = true;
 }
Example #7
0
 /// <summary>
 /// 启动网络
 /// </summary>
 public void Start()
 {
     m_Buffer   = new byte[m_BufferSize];
     Socket     = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //实例化Socket
     m_EndPoint = new IPEndPoint(IPAddress.Parse(IP), Port);                                  //服务端的终端信息
     INetworkPacketQueue.EnNetworkQueue(new NetworkEventArgs()
     {
         NetworkState = NetworkStateType.Start, Packet = new NetworkPacket()
         {
             INetwork = this
         }
     });                                                                                                                                                     //消息队列
     Socket.BeginReceiveFrom(m_Buffer, 0, m_Buffer.Length, SocketFlags.None, ref m_EndPoint, new AsyncCallback(AsycReveiveFrom), null);
     IsActive = true;
 }
Example #8
0
        /// <summary>
        /// 创建网络
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t_NetworkName"></param>
        /// <param name="t_IP"></param>
        /// <param name="t_Port"></param>
        /// <param name="t_INetworkQueue"></param>
        /// <returns></returns>
        public T CreateNetwork <T>(string t_NetworkName, string t_IP, int t_Port, INetworkPacketQueue t_INetworkPacketQueue = null, AddressFamily t_AddressFamily = AddressFamily.InterNetwork) where T : INetwork
        {
            INetwork t_INetwork = null;

            if (IMapDataStructure.ContainsKey(t_NetworkName))
            {
                IMapDataStructure.TryGetValue(t_NetworkName, out t_INetwork);
                return((T)t_INetwork);
            }
            else
            {
                object[] t_Parameters = new object[] { t_IP, t_Port };

                T t_Instance = (T)System.Activator.CreateInstance(typeof(T), t_IP, t_Port, t_INetworkPacketQueue ?? new DefaultNetworkPacketQueue(), t_AddressFamily);
                IMapDataStructure.Add(t_NetworkName, t_Instance);
                t_Instance.Start();
                return(t_Instance);
            }
        }
Example #9
0
 /// <summary>
 /// 创建网络
 /// </summary>
 /// <typeparam name="T">网络的类型</typeparam>
 /// <param name="t_NetworkName">网络的名字</param>
 /// <param name="t_IP">IP</param>
 /// <param name="t_Port">Port</param>
 /// <param name="t_INetworkPacketQueue">网络消息包队列</param>
 /// <param name="t_AddressFamily">寻址方案</param>
 /// <returns>网络的类型对应的实例</returns>
 public T CreateNetwork <T>(string t_NetworkName, string t_IP, int t_Port, INetworkPacketQueue t_INetworkPacketQueue = null, AddressFamily t_AddressFamily = AddressFamily.InterNetwork) where T : INetwork
 {
     return(m_INetworkManager.CreateNetwork <T>(t_NetworkName, t_IP, t_Port, t_INetworkPacketQueue, t_AddressFamily));
 }