Example #1
0
        /// <summary>
        /// Receive thread to endpoint.
        /// Should spin until all messages received
        /// </summary>
        /// <param name="clientState">
        /// clientstate object</param>
        internal void ClientReceive(ClientState clientState)
        {
            try
            {
                int receivedMessages = 0;
                byte[] byteSize = new byte[LENGTH_BITS];
                //clientState.serverBuffer = new byte[BUFFER_SIZE];
                byte[] serverBuffer = new byte[BUFFER_SIZE];
                //byte[] forwardMessage;

                while (receivedMessages < clientState.messageCount)
                {
                    //int offset = 0;
                    //int size = 0;
                    int bytesRead = 0;

                    #region savedBad
                    ////clientState.serverSock.ReceiveTimeout = 2000;

                    //////bytesRead = clientState.serverSock.Receive(clientState.serverBuffer, offset,
                    //////    LENGTH_BITS, System.Net.Sockets.SocketFlags.None);
                    ////while (bytesRead < 2)
                    ////{
                    //    bytesRead = clientState.serverSock.Receive(serverBuffer, offset,
                    //        LENGTH_BITS, System.Net.Sockets.SocketFlags.None);
                    ////}

                    ////Array.Copy(clientState.serverBuffer, offset, byteSize, 0, LENGTH_BITS);
                    //Array.Copy(serverBuffer, offset, byteSize, 0, LENGTH_BITS);

                    //if (BitConverter.IsLittleEndian)
                    //{
                    //    Array.Reverse(byteSize);
                    //}

                    //size = BitConverter.ToInt16(byteSize, 0);
                    //offset += LENGTH_BITS;

                    //////bytesRead = clientState.serverSock.Receive(clientState.serverBuffer, offset,
                    //////    size, System.Net.Sockets.SocketFlags.None);
                    ////while (bytesRead < size)
                    ////{
                    //    bytesRead = clientState.serverSock.Receive(serverBuffer, offset,
                    //        size, System.Net.Sockets.SocketFlags.None);
                    ////}

                    ////clientState.forwardMessage = new byte[bytesRead];
                    ////clientState.forwardMessage = new byte[bytesRead];
                    ////Array.Copy(clientState.serverBuffer, offset, clientState.forwardMessage, 0, bytesRead);
                    //byte[] forwardMessage = new byte[bytesRead];
                    ////Array.Copy(serverBuffer, offset, forwardMessage, 0, bytesRead);
                    //Array.Copy(serverBuffer, 0, forwardMessage, 0, bytesRead);

                    ////clientState.lb.routedMessages.Add(clientState.forwardMessage);
                    //clientState.lb.routedMessages.Add(forwardMessage);
                    #endregion

                    lock (clientState.serverReceiveLock)
                    {
                        bytesRead = clientState.serverSock.Receive(serverBuffer);
                    }

                    byte[] forwardMessage = new byte[bytesRead];
                    Array.Copy(serverBuffer, forwardMessage, bytesRead);

                    receivedMessages++;

                    lock (clientState.clientSendLock)
                    {
                        clientState.clientSock.Send(forwardMessage);
                    }

                    //Thread routeMsgThread = new Thread(delegate()
                    //{
                    //    RouteMessage(clientState, forwardMessage);
                    //});
                    //routeMsgThread.Start();
                }
            }
            catch (Exception e)
            {
                e.Message.ToString();
                System.Windows.Forms.MessageBox.Show("ClientRun.ClientReceive function\r\n" + e.Message.ToString());
                Thread.Sleep(5000);
            }

            //routeMsgThread.Join();

            //System.Windows.Forms.MessageBox.Show("Received All Messages");
        }
Example #2
0
 //internal void RouteMessage(ClientState clientState, byte[] forwardMessage)
 /// <summary>
 /// forwards message from endpoint server to client
 /// </summary>
 /// <param name="clientState">
 /// ClientState object
 /// </param>
 private void RouteMessage(ClientState clientState, byte[] forwardMessage)
 {
     try
     {
         lock (clientState.clientSendLock)
         {
             //clientState.clientSock.Send(clientState.forwardMessage);
             clientState.clientSock.Send(forwardMessage);
             //clientState.clientSock.Send(forwardMessage, forwardMessage.Length, System.Net.Sockets.SocketFlags.None);
         }
     }
     catch (Exception e)
     {
         e.Message.ToString();
         System.Windows.Forms.MessageBox.Show("ClientRun.RouteMessage\r\n" + e.Message.ToString());
     }
 }
Example #3
0
        /// <summary>
        /// sets up the clientstate object to prepare
        /// for send/receive operations from endpoint
        /// connection
        /// </summary>
        /// <param name="sockState">
        /// takes a socketState object
        /// </param>
        /// <returns>
        /// socket connected to endpoint server
        /// </returns>
        internal System.Net.Sockets.Socket SetClientSocket(ClientState clientState)
        {
            //endPointIP = clientState.serverIPAddress1;
            Connect(clientState);

            return clientState.serverSock;
        }
Example #4
0
        /// <summary>
        /// Connects to the endpoint
        /// </summary>
        /// <param name="clientState">
        /// takes a clientstate object and connects it to endpoint
        /// </param>
        private void Connect(ClientState clientState)
        {
            System.Net.Sockets.Socket sock = new System.Net.Sockets.Socket(
                System.Net.Sockets.AddressFamily.InterNetwork,
               System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp);

            try
            {
                //sock.Connect(endPointIP, PORT);
                sock.Connect(clientState.serverIPAddress1, PORT);

                sock.SetSocketOption(System.Net.Sockets.SocketOptionLevel.Tcp,
                    System.Net.Sockets.SocketOptionName.NoDelay, true);

                clientState.serverSock = sock;
            }
            catch (Exception e)
            {
                e.Message.ToString();
                System.Windows.Forms.MessageBox.Show("Connect Function \r\n" + e.Message.ToString());
            }
        }
Example #5
0
        /// <summary>
        /// sends message to endpoint
        /// </summary>
        /// <param name="clientState">
        /// ClientState object
        /// </param>
        internal void ClientSend(ClientState clientState, byte[] sendMsg)
        {
            try
            {
                // Send clientState.Processed message to server
                Thread.Sleep(clientState.pace);

                // lock and send to the server
                lock (clientState.serverSendLock)
                {
                    //clientState.serverSock.Send(clientState.processedMessage);
                    clientState.serverSock.Send(sendMsg, sendMsg.Length, System.Net.Sockets.SocketFlags.None);
                }

                clientState.serverSentCounter++;
            }
            catch (Exception e)
            {
                e.Message.ToString();
                //System.Windows.Forms.MessageBox.Show("ClientRun.ClientSend\r\n" + e.Message.ToString());
            }
        }