Esempio n. 1
0
        static async Task Receive()
        {
            IPEndPoint remoteEP = new IPEndPoint(IPAddress.Any, 0);
            await Task.Run(() => {
                while (true)
                {
                    var bytRecv    = udpClient.Receive(ref remoteEP);
                    string message = Encoding.Unicode.GetString(bytRecv, 0, bytRecv.Length);
                    Console.WriteLine($"form {remoteEP} : {message}");

                    var env = JsonConvert.DeserializeObject <envelope>(message);

                    //需要确认的信息
                    if (env.number > 0)
                    {
                        envelope confirmEnv = new envelope();
                        confirmEnv.type     = envelopeType.confirm;
                        confirmEnv.number   = env.number;
                        send(confirmEnv, remoteEP);
                    }

                    if (connectUser == null && env.type == envelopeType.connectTo)
                    {
                        var user    = JsonConvert.DeserializeObject <connectTo>(env.body);
                        connectUser = new IPEndPoint(IPAddress.Parse(user.ip), user.port);
                        send("你好", connectUser);
                        Console.WriteLine($"你现在可以和[{user.ip}:{user.port}]发送信息了");
                    }
                }
            });
        }
Esempio n. 2
0
        static async Task sendConfirm(envelope env, IPEndPoint remoteEP)
        {
            confirmTask cf = null;
            await Task.Run(() => {
                lock (lockNumber) {
                    env.number = ++number;
                }
                cf = new confirmTask()
                {
                    number = number, isConfirm = false
                };

                numberConfirms.Add(cf);

                var sendbytes = Encoding.Unicode.GetBytes(JsonConvert.SerializeObject(env));

                for (int i = 0; i < 3; i++)
                {
                    udpServer.Send(sendbytes, sendbytes.Length, remoteEP);
                    Thread.Sleep(5000);
                    if (cf.isConfirm)
                    {
                        break;
                    }
                }
            }).ContinueWith(t => numberConfirms.Remove(cf));
        }
Esempio n. 3
0
        static void Main(string[] args)
        {
            Console.WriteLine("Int형 Envelope");
            envelope<int> intEnvelope = new envelope<int>();
            intEnvelope.showSize();

            Console.WriteLine("추가 1, 10, 20, 50");
            intEnvelope.addShape(1, 10, 20, 50);
            intEnvelope.showSize();

            Console.WriteLine("추가 -6, 1, 15, 100");
            intEnvelope.addShape(-6, 1, 15, 100);
            intEnvelope.showSize();

            Console.WriteLine("");
            Console.WriteLine("double형 Envelope");
            envelope<double> doubleEnvelope = new envelope<double>();
            doubleEnvelope.showSize();

            Console.WriteLine("추가 1.1, 10.2, 20.2, 50.2");
            doubleEnvelope.addShape(1.1, 10.2, 20.2, 50.2);
            doubleEnvelope.showSize();

            Console.WriteLine("추가 -6.5, 1.1, 15.3, 100.4");
            doubleEnvelope.addShape(-6.5, 1.1, 15.3, 100.4);
            doubleEnvelope.showSize();

        }
Esempio n. 4
0
        static void send(string msg, IPEndPoint remoteEP)
        {
            envelope env = new envelope();

            env.type = envelopeType.message;
            env.body = msg;
            send(env, remoteEP);
        }
Esempio n. 5
0
        static void sendContentMessage(userInfo toUser, userInfo contentUser)
        {
            envelope env = new envelope();

            env.type = envelopeType.connectTo;
            connectTo body = new connectTo();

            body.ip   = contentUser.ip;
            body.port = contentUser.port;
            env.body  = JsonConvert.SerializeObject(body);
            sendConfirm(env, new IPEndPoint(IPAddress.Parse(toUser.ip), toUser.port));
        }
Esempio n. 6
0
        static void Main(string[] args)
        {
            Receive();
            Thread.Sleep(1000);

            Console.WriteLine("等待对方连接...");
            //进行连接
            envelope env = new envelope();

            env.type = envelopeType.connect;
            send(env, serverEP);



            while (true)
            {
                var str = Console.ReadLine();
                if (connectUser != null)
                {
                    send(str, connectUser);
                }
            }
        }
Esempio n. 7
0
        static void send(envelope env, IPEndPoint remoteEP)
        {
            var sendbytes = Encoding.Unicode.GetBytes(JsonConvert.SerializeObject(env));

            udpClient.Send(sendbytes, sendbytes.Length, remoteEP);
        }
Esempio n. 8
0
 public EvpMatrices(EndianBinaryReader er, int NumNodes)
 {
     m = new envelope[NumNodes];
     for (int i = 0; i < NumNodes; i++)
     {
         m[i] = new envelope(er);
     }
 }