// ------------------------------------------------------------------------------ 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); } }
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; }