Ejemplo n.º 1
0
        /// <summary>根据远程网络标识创建客户端</summary>
        /// <param name="remote"></param>
        /// <returns></returns>
        public static ISocketClient CreateRemote(this NetUri remote)
        {
            if (remote == null) throw new ArgumentNullException("remote");

            switch (remote.Type)
            {
                case NetType.Tcp:
                    var tcp = new TcpSession { Remote = remote };
                    return tcp;
                case NetType.Udp:
                    var udp = new UdpServer { Remote = remote, UseReceiveAsync = true };
                    return udp;
                default:
                    throw new NotSupportedException("不支持{0}协议".F(remote.Type));
            }
        }
Ejemplo n.º 2
0
        static void Test15()
        {
            //"我是超级大石头!".Speak();

            var tcp = new TcpSession();
            tcp.Log = XTrace.Log;
            tcp.Remote = "tcp://127.0.0.1:8";
            //tcp.MessageDgram = true;
            tcp.AutoReconnect = 0;
            //tcp.Send("我是大石头!");
            tcp.Open();
            //tcp.Stream = new PacketStream(tcp.Stream);
            //var ms = new MemoryStream();
            for (int i = 0; i < 10; i++)
            {
                tcp.Send("我是大石头{0}!".F(i + 1));
                //var buf = "我是大石头{0}!".F(i + 1).GetBytes();
                //ms.WriteEncodedInt(buf.Length);
                //ms.Write(buf);
            }
            //ms.Position = 0;
            //tcp.Client.GetStream().Write(ms);

            while (tcp.Active)
            {
                var str = tcp.ReceiveString();
                Console.WriteLine(str);
            }

            //NetHelper.Debug = true;
            //var server = new StunServer();
            //server.Start();

            //Console.WriteLine(NetHelper.MyIP().GetAddress());
            //Console.WriteLine(IPAddress.Any.GetAddress());
            //Console.WriteLine(IPAddress.Loopback.GetAddress());

            //var buf = NetHelper.MyIP().GetAddressBytes();
            //buf[3] = 33;
            //Console.WriteLine(new IPAddress(buf).GetAddress());

            //var ip = NetHelper.ParseAddress("dg.newlifex.com");
            //Console.WriteLine(ip.GetAddress());
            //Console.WriteLine(Ip.GetAddress(ip.ToString()));

            //var client = new StunClient();
            //var rs = client.Query();
            //if (rs != null)
            //{
            //    //if (rs != null && rs.Type == StunNetType.Blocked && rs.Public != null) rs.Type = StunNetType.Symmetric;
            //    XTrace.WriteLine("网络类型:{0} {1}", rs.Type, rs.Type.GetDescription());
            //    XTrace.WriteLine("公网地址:{0} {1}", rs.Public, Ip.GetAddress(rs.Public.Address.ToString()));
            //}
        }
Ejemplo n.º 3
0
        /// <summary>根据本地网络标识创建客户端</summary>
        /// <param name="local"></param>
        /// <returns></returns>
        public static ISocketClient CreateClient(this NetUri local)
        {
            if (local == null) throw new ArgumentNullException("local");

            switch (local.Type)
            {
                case NetType.Tcp:
                    var tcp = new TcpSession { Local = local };
                    return tcp;
                case NetType.Udp:
                    var udp = new UdpServer { Local = local, UseReceiveAsync = true };
                    return udp;
                default:
                    throw new NotSupportedException("不支持{0}协议".F(local.Type));
            }
        }