Exemple #1
0
        // ------------------------------------------------------------------------------
        static void Main(string[] args)
        {
            if (args.Length < 2) {
                Console.WriteLine("usage: <server|client> port [<remoteHost> [iterations]]");
                System.Environment.Exit(1);
            }

            int portNumber = Int32.Parse(args[1]);
            string remoteHost = "localhost";
            int iterations = 100;

            IntDataTest idt = new IntDataTest();

            if (args.Length > 2) {
                remoteHost = args[2];
            }
            if (args.Length > 3) {
                iterations = Int32.Parse(args[3]);
            }

            if (args[0] == "client") {
                Console.WriteLine("Trying to establish a mocket/socket connection to port {0}", portNumber);
                Stats socketStats = new Stats();
                Stats mocketStats = new Stats();
                int rc;

                for (int i = 0; i < iterations; i++)
                {
                    Console.WriteLine("iteration # :: {0}", i);

                    rc = idt.doClientTask(remoteHost, (ushort) portNumber, true, mocketStats);
                    if (rc != 0)
                    {
                        Console.WriteLine("main: doClientTask failed for sockets with rc = {0}", rc);
                        System.Environment.Exit(-2);
                    }

                    rc = idt.doClientTask(remoteHost, (ushort) portNumber, false, socketStats);
                    if (rc != 0)
                    {
                        Console.WriteLine("main: doClientTask failed for mockets with rc = {0}", rc);
                        System.Environment.Exit(-3);
                    }

                    Console.WriteLine("-----------------------------------------");
                    Console.WriteLine("TotalAttempts: {0}\n", i + 1);
                    Console.WriteLine("MessageMocket Stats:: Average:       {0,10:#.##}", mocketStats.getAverage());
                    Console.WriteLine("MessageMocket Stats:: St Deviation:  {0,10:#.##}", mocketStats.getStDev());
                    Console.WriteLine("Socket Stats:: Average:       {0,10:#.##}", socketStats.getAverage());
                    Console.WriteLine("Socket Stats:: St Deviation:  {0,10:#.##}", socketStats.getStDev());
                    //Console.WriteLine("Socket Stats:: St Deviation:  %10.4f", socketStats.getStDev());
                    Console.WriteLine("-----------------------------------------");

                    Console.WriteLine("Sleeping for 3 seconds...\n");
                    Thread.Sleep(3000);
                }
            }
            else if (args[0] == "server") {
                idt.runServers((ushort)portNumber);
            }
        }
Exemple #2
0
        public int doClientTask(string remoteHost, ushort remotePort, bool useMockets, Stats stats)
        {
            int rc;
            byte[] buf = new byte[1024];

            if (useMockets) {
                Console.WriteLine ("doClientTask: Using MessageMockets");
                ManagedMessageMocket mocket = new ManagedMessageMocket();
                //mocket.bind("127.0.0.1", 6789);

                Console.WriteLine ("doClientTask: MessageMockets: Before connect\n");
                rc = mocket.connect(remoteHost, remotePort);
                if (0 != rc) {
                    Console.WriteLine("doClientTask: failed to connect using MessageMockets to remote host {0} on port {1}; rc = {2}",
                             remoteHost, remotePort, rc);
                    Console.WriteLine("doClientTask: Unable to connect\n");
                    return -1;
                }

                PeerUnreachableWarningCallback callback = new PeerUnreachableWarningCallback(this.peerUnreachableCallback);
                mocket.registerPeerUnreachableWarningCallback(callback);

                int dataSize = IntDataTest.DATA_SIZE;
                int bytesSent = 0;
                long startTime = Util.currentTimeMillis();

                ManagedMessageSender sender = mocket.getSender(true, true);
                byte[] auxBuf = new byte[4];
                Util.fromUnsignedIntTo4Bytes((uint)dataSize, auxBuf, 0);

                // sending the data size.
                sender.send(auxBuf, 4);
                Console.WriteLine("will write {0} bytes of data", dataSize);
                while (bytesSent < dataSize) {
                    sender.send (buf, (uint)buf.Length);
                    bytesSent += buf.Length;
                    //Console.WriteLine("written so far :: {0}", bytesSent);
                }

                Console.WriteLine("done writing data.");

                mocket.receive(auxBuf, 1);
                if (auxBuf[0] != '.') {
                    Console.WriteLine("doClientTask: failed to receive . from remote host");
                    return -2;
                }

                long time = Util.currentTimeMillis() - startTime;
                stats.update((double) time);

                // Save results to a file
                Util.saveStats (mocket, "MsgMockets-cs", time);
            }
            else {
                //Socket socket = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                //socket.Connect(remoteHost, remotePort);
                TcpClient client = new TcpClient(remoteHost, remotePort);
                NetworkStream stream = client.GetStream();

                int dataSize = IntDataTest.DATA_SIZE;
                int bytesSent = 0;
                long startTime = Util.currentTimeMillis();

                byte[] auxBuf = new byte[4];
                Util.fromUnsignedIntTo4Bytes((uint)dataSize, auxBuf, 0);

                // sending the data size.
                //socket.Send (auxBuf);
                stream.Write(auxBuf, 0, 4);
                Console.WriteLine ("socket will write {0} bytes of data", dataSize);
                while (bytesSent < dataSize) {
                    //socket.Send (buf);
                    stream.Write(buf, 0, buf.Length);
                    bytesSent += buf.Length;
                    //Console.WriteLine("written so far :: {0}", bytesSent);
                }
                stream.Flush();

                Console.WriteLine("Socket done writing data.");
                Console.WriteLine("->>:Socket before socket.Receive");
                //socket.Receive (auxBuf);
                stream.Read(auxBuf, 0, 1);
                Console.WriteLine("->>:Socket after socket.Receive", auxBuf[0]);
                if (auxBuf[0] != '.') {
                    Console.WriteLine("doClientTask:Socket failed to receive . from remote host");
                    return -2;
                }

                long time = Util.currentTimeMillis() - startTime;
                stats.update ((double)time);

                // Save results to a file
                Console.WriteLine("->>:Socket before saveStats");
                //Util.saveStats (socket, "Sockets-cs", time);
                Util.saveStats(client, "Sockets-cs", time);
                Console.WriteLine("->>:Socket after saveStats");
            }
            return 0;
        }