Пример #1
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;
        }